0
以下是一段C代码,我被要求在接受记者采访时分析。
int main() {
char *ptr = "hello";
return 0;
}
内存的哪个部分没有字符串“hello”被存储?
以下是一段C代码,我被要求在接受记者采访时分析。
int main() {
char *ptr = "hello";
return 0;
}
内存的哪个部分没有字符串“hello”被存储?
这是针对具体实现而不是标准规定的。您必须查阅特定编译器的文档以确定它的放置位置。
通常,编译器将字符串文字放在只读数据段(如代码段)中。这允许在程序中使用可以共享的单个内存对多个不同的字符串文字进行编码。这也是为什么试图在原地修改字符串文字是一个不好的想法,因为这往往会因为写入只读段而触发分段错误。这不能保证,但通常以这种方式实施。