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

时间:2013-09-22 14:14:33

标签: c++ c string

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

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

我的问题可能显得很愚蠢,但请耐心等待我;我目前仍然是C ++中的dummie。

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

由于

3 个答案:

答案 0 :(得分:4)

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

Is a string literal in c++ created in static memory?

答案 1 :(得分:3)

Memory leak是由动态内存分配引起的。

此处没有动态分配,因此无内存泄漏

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

  

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

     

所有没有动态存储持续时间,没有线程存储持续时间且不是本地的变量都具有静态存储持续时间。 这些实体的存储应在程序期间持续

答案 2 :(得分:1)

没有动态内存分配,因此没有泄漏。你所拥有的是一个指向字符串文字的指针,它存储在实现定义的只读存储器中。