重新分配C样式字符串会导致内存泄漏吗?像这样:
char * s = "Hello!";
s = "Hello, world!";
我的问题可能显得很愚蠢,但请耐心等待我;我目前仍然是C ++中的dummie。
在第二行代码中,C样式字符串s
更长,它是否在内部重新分配内存?这会导致内存泄漏吗?我是否必须致电delete
?
由于
答案 0 :(得分:4)
实际上,技术上没有。字符串文字提供特殊的静态分配。参见
答案 1 :(得分:3)
Memory leak是由动态内存分配引起的。
此处没有动态分配,因此无内存泄漏。
实际上,字符串文字具有静态存储持续时间。标准说(草案n3690):
3.7.1静态存储时间[basic.stc.static]
所有没有动态存储持续时间,没有线程存储持续时间且不是本地的变量都具有静态存储持续时间。 这些实体的存储应在程序期间持续。
答案 2 :(得分:1)
没有动态内存分配,因此没有泄漏。你所拥有的是一个指向字符串文字的指针,它存储在实现定义的只读存储器中。