char*空间分配

yel*_*yed 0 c++ memory-leaks string-literals

我的理解是在C和C++中,通过调用:创建一个字符数组:

char *s = "hello";
Run Code Online (Sandbox Code Playgroud)

实际上创建了两个对象:在静态空间中创建的只读字符数组,意味着它在程序的整个持续时间内存在,以及指向该内存的指针.指针是其范围的局部变量然后死亡.

我的问题是当指针死亡时数组会发生什么?如果我在函数内执行上面的代码,这是否意味着退出函数后我有内存泄漏?

小智 6

它在整个计划期间都存在

确切地说,它正式具有static存储持续时间.

当指针死亡时,数组会发生什么?

没有.

如果我在函数内执行上面的代码,这是否意味着退出函数后我有内存泄漏?

不,因为(1).(当程序退出时,该阵列仅被"释放".)