struct st{
int a;
char *ptr;
}obj;
main()
{
obj.a=10;
obj.ptr="Hello World"; // (1) memory allocation?
printf("%d,%s",obj.a,obj.ptr);
}
ptr
在 struct 中声明。当发生 Hello world
的分配时,内存未分配,但该程序运行良好并正确输出。在标记 (1)
处完成分配时,它不应该失败/崩溃吗?
最佳答案
"Hello World"
是驻留在程序的只读内存部分 (.rodata) 中的字符串文字。您指向此部分,然后打印内容。程序行为 100% 明确定义,不应崩溃。
但是,最好始终将指向字符串文字的指针声明为 const char*
,因为不允许修改字符串文字。
关于c++ - 初始化 char * 没有给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24014047/