c++ - 初始化 char * 没有给出错误

标签 c++ c

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/

相关文章:

c++ - 客户端断开连接后处理服务器应用程序中的线程

c - 内存泄漏,在 C 中的两个字符**

c - 如何从控制台读取未知数量的整数?

c++ - Tokyo Cabinet : Segmentation fault at hdb->close()

c++ - 如何在C++中将给定数字显示为图形数字

c++ - 除非在断点处停止,否则如何测量一大块代码的时间?

c++ - vector 删除的传播

c++ - 使用循环将随机数添加到链表中

c - 分别打印字符串中的偶数奇数字符

更改 R 包中的 C 源代码