Answer:
The string literal will be allocated in data segment. The pointer to it,
The string literal will be allocated in data segment. The pointer to it,
a
, will be allocated on the stack.#include <stdio.h>
int main()
{
char *a;
a = "tesaja";
return 0;
}
where will
a
allocated to ? stack or heap ?
code will eventually be transformed by the compiler into something like this:
#include <stdio.h>
const static char literal_constant_34562[7] = {'t', 'e', 's', 'a', 'j', 'a', '\0'};
int main()
{
char *a;
a = &literal_constant_34562[0];
return 0;
}
Therefore, the exact answer to your question is: neither. Stack, data, bss and heap are all different regions of memory. Const static initialized variables will be in data.
Reference:
No comments:
Post a Comment