3

重新分配 C 风格的字符串会导致内存泄漏吗?像这样:

char * s = "Hello!";
s = "Hello, world!";

我的问题可能看起来很愚蠢,但请多多包涵;我目前仍然是 C++ 的傻瓜。

在第二行代码中,C 风格的字符串s较长,所以它是否在内部重新分配内存?这会导致内存泄漏吗?我必须打电话delete吗?

谢谢

4

3 回答 3

4

实际上,技术上没有。字符串文字提供了特殊的静态分配。看

c++ 中的字符串文字是在静态内存中创建的吗?

于 2013-09-22T14:17:00.423 回答
3

内存泄漏是由动态内存分配引起的。

这里没有动态分配,所以没有内存泄漏

实际上,字符串文字具有静态存储持续时间。标准说(草案 n3690):

3.7.1 静态存储时长[basic.stc.static]

所有没有动态存储时长、没有线程存储时长、非本地变量都有静态存储时长。这些实体的存储将持续整个程序的持续时间

于 2013-09-22T14:17:07.753 回答
1

没有动态内存分配,所以没有泄漏。您所拥有的是一个指向字符串文字的指针,该字符串文字存储在实现定义的只读内存中的某处。

于 2013-09-22T14:15:46.743 回答