Consider the function:
char *func() { return \"Some thing\"; }
Is the constant string (char array) \"So
string
char
\"So
Neither on the heap, nor on stack, it is part of the so-called init section in the executable image (COFF). This is loaded into memory and contains stuff like strings.