Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 67191
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T19:13:16+00:00 2026-05-10T19:13:16+00:00

I always try to avoid to return string literals, because I fear they aren’t

  • 0

I always try to avoid to return string literals, because I fear they aren’t defined outside of the function. But I’m not sure if this is the case. Let’s take, for example, this function:

const char * return_a_string(void) {     return "blah"; } 

Is this correct code? It does work for me, but maybe it only works for my compiler (gcc). So the question is, do (string) literals have a scope or are they present/defined all the time.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T19:13:17+00:00Added an answer on May 10, 2026 at 7:13 pm

    This code is fine across all platforms. The string gets compiled into the binary as a static string literal. If you are on windows for example you can even open your .exe with notepad and search for the string itself.

    Since it is a static string literal scope does not matter.

    String pooling:

    One thing to look out for is that in some cases, identical string literals can be ‘pooled’ to save space in the executable file. In this case each string literal that was the same could have the same memory address. You should never assume that it will or will not be the case though.

    In most compilers you can set whether or not to use static string pooling for stirng literals.

    Maximum size of string literals:

    Several compilers have a maximum size for the string literal. For example with VC++ this is approximately 2,048 bytes.

    Modifying a string literal gives undefined behavior:

    Modifying a string literal should never be done. It has an undefined behavior.

    char * sz = 'this is a test'; sz[0] = 'T'; //<--- undefined results 

    Wide string literals:

    All of the above applies equally to wide string literals.

    Example: L’this is a wide string literal’;

    The C++ standard states: (section lex.string)

    1 A string literal is a sequence of characters (as defined in lex.ccon) surrounded by double quotes, optionally beginning with the letter L, as in ‘…’ or L’…’. A string literal that does not begin with L is an ordinary string literal, also referred to as a narrow string literal. An ordinary string literal has type ‘array of n const char’ and static storage duration (basic.stc), where n is the size of the string as defined below, and is initialized with the given characters. A string literal that begins with L, such as L’asdf’, is a wide string literal. A wide string literal has type ‘array of n const wchar_t’ and has static storage duration, where n is the size of the string as defined below, and is initialized with the given charac- ters.

    2 Whether all string literals are distinct (that is, are stored in nonoverlapping objects) is implementation-defined. The effect of attempting to modify a string literal is undefined.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 91k
  • Answers 91k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer If you want to be absolutely certain, then compile it… May 11, 2026 at 6:14 pm
  • Editorial Team
    Editorial Team added an answer There are three things you can do: Add some code… May 11, 2026 at 6:14 pm
  • Editorial Team
    Editorial Team added an answer I believe the functionality is now built in: compile ast May 11, 2026 at 6:14 pm

Related Questions

I always try to avoid to return string literals, because I fear they aren't
In my question As a mockist TDD practitioner, should I mock other methods in
I know that cursors are frowned upon and I try to avoid their use
Background: I always try to ensure the following tenet in my projects: After a
If I am setting the Text property of a Form from a non-UI thread,

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.