I know that string literal used in program gets storage in read only area for eg.
//global const char *s="Hello World \n"; Here string literal "Hello World\n" gets storage in read only area of program . Now suppose I declare some literal in body of some function like
func1(char *name) { const char *s="Hello World\n"; } As local variables to function are stored on activation record of that function, is this the same case for string literals also? Again assume I call func1 from some function func2 as
func2() { //code char *s="Mary\n"; //call1 func1(s); //call2 func1("Charles"); //code } Here above,in 1st call of func1 from func2, starting address of 's' is passed i.e. address of s[0], while in 2nd call I am not sure what does actually happens. Where does string literal "Charles" get storage. Whether some temperory is created by compiler and it's address is passed or something else happens? I found literals get storage in "read-only-data" section from String literals: Where do they go? but I am unclear about whether that happens only for global literals or for literals local to some function also. Any insight will be appreciable. Thank you.
gcc, another interesting question would be whether there is any requirement for this by any standard.