重新分配 C 风格的字符串会导致内存泄漏吗?像这样:
char * s = "Hello!";
s = "Hello, world!";
我的问题可能看起来很愚蠢,但请多多包涵;我目前仍然是 C++ 的傻瓜。
在第二行代码中,C 风格的字符串s
较长,所以它是否在内部重新分配内存?这会导致内存泄漏吗?我必须打电话delete
吗?
谢谢
实际上,技术上没有。字符串文字提供了特殊的静态分配。看
内存泄漏是由动态内存分配引起的。
这里没有动态分配,所以没有内存泄漏。
实际上,字符串文字具有静态存储持续时间。标准说(草案 n3690):
3.7.1 静态存储时长[basic.stc.static]
所有没有动态存储时长、没有线程存储时长、非本地变量都有静态存储时长。这些实体的存储将持续整个程序的持续时间。
没有动态内存分配,所以没有泄漏。您所拥有的是一个指向字符串文字的指针,该字符串文字存储在实现定义的只读内存中的某处。