有时我们在我们的c编程中使用这种类型的代码。常量字符串将存储在内存中的位置?
char *p = "Sam";
这里常量字符串“Sam”的地址将被存储在char指针p中。现在在这里
我想问一下Sam将要存储在哪里?
有时我们在我们的c编程中使用这种类型的代码。常量字符串将存储在内存中的位置?
char *p = "Sam";
这里常量字符串“Sam”的地址将被存储在char指针p中。现在在这里
我想问一下Sam将要存储在哪里?
标准没有规定这一点。通常,字符串文字("Sam"
)将存储在数据部分中的只读页面中。
至于p
本身,它取决于它是自动的还是静态的。
哪里存储自动和全局? –
@ Mr.32自动变量存储在堆栈中。 “全局”或静态变量存储在“数据”(或可能是“bss”)中。 – cnicutar
哪个体系结构在'data'部分有只读页面?在Linux/ELF上,字符串文字会与'rodata'节中的其他只读非代码数据一起存储,'rodata'节与text'相同。 –
字符串“Sam”通常会存储在与全局常量相同的区域的全局内存中。
但是,如果你这样做:
char p[] = "Sam";
然后,它会在堆栈上,而不是。 (作为一个数组初始值设定)
可能的重复[哪里是存储在C中的常量变量?](http://stackoverflow.com/questions/1576489/where-are-constant-variables-stored-in-c) –
@BrianRoach字符串文字不是一个常量变量。 –