重新分配 C 样式字符串是否会导致内存泄漏
Can reassigning a C style string cause a memory leak?
重新分配 C 样式字符串会导致内存泄漏吗?这样:
char * s = "Hello!";
s = "Hello, world!";
我的问题可能看起来很愚蠢,但请耐心等待;我目前仍然是C++的假人。
在第二行代码中,C 样式字符串s
更长,那么它是否在内部重新分配内存?这会导致内存泄漏吗?我必须打电话给delete
吗?
谢谢
实际上,从技术上讲没有。 字符串文本提供特殊的静态分配。 看
c++ 中的字符串文字是在静态内存中创建的吗?
内存泄漏是由动态内存分配引起的。
这里没有动态分配,因此没有内存泄漏。
实际上,字符串文本具有静态存储持续时间。该标准说(草案n3690):
3.7.1 静态存储持续时间
所有没有动态存储持续时间、没有线程存储持续时间和不是局部的变量都具有静态存储持续时间。这些实体的存储应在计划期间持续。
没有动态内存分配,因此没有泄漏。您拥有的是一个指向字符串文本的指针,该字符串文本存储在定义的只读内存中的实现中的某个位置。
相关文章:
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 我是否生成线程并导致内存泄漏?
- 我的堆栈弹出式磁带的实现是否泄漏内存?
- 此函数是否会在C++中创建内存泄漏?
- 以下代码是否存在内存泄漏?
- 构造函数对象赋值是否泄漏内存
- 如果操作系统未清除内存泄漏,则在程序完成后内存泄漏是否仍然存在?
- 我的C++代码中是否有一些内存泄漏
- gpc服务器不会释放内存,是否存在内存泄漏?
- QabtractItemmodel :: Removerows是否会导致内存泄漏
- 这些场景中的任何一个是否会造成内存泄漏
- 以下代码中的嵌入"new"是否会导致内存泄漏?
- 新 X 在作为参数传递给函数时是否会导致 mem 泄漏
- 此函数是否泄漏内存
- 我的链表实现是否泄漏内存
- 此程序是否泄漏内存
- log4cxx::Level::getError()是否泄漏内存
- c++,是否泄漏?什么是可以做的
- 当使用new创建其构造函数抛出的对象时,是否泄漏构造对象
- 如何判断我是否泄漏了 COM 对象?