重新分配 C 样式字符串是否会导致内存泄漏



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

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

我的问题可能看起来很愚蠢,但请耐心等待;我目前仍然是C++的假人。

在第二行代码中,C 样式字符串s更长,那么它是否在内部重新分配内存?这会导致内存泄漏吗?我必须打电话给delete吗?

谢谢

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

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

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

这里没有动态分配,因此没有内存泄漏

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

3.7.1 静态存储持续时间

所有没有动态存储持续时间、没有线程存储持续时间和不是局部的变量都具有静态存储持续时间。这些实体的存储应在计划期间持续。

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

最新更新