c++深度拷贝中的内存泄漏
Memory Leakage in Deep Copy C++
我正在尝试理解深度复制并编写这个程序。
#include <iostream>
#include <string.h>
using namespace std;
char a[10];
class String
{
public:
char *ptr;
String()
{
ptr = a;
}
void setString(const char *str)
{
strcpy(ptr,str);
}
void operator=(String k){
ptr = new char[10];
strcpy(ptr, k.ptr);
}
char* getString()
{
return ptr;
}
};
class student
{
public:
String name;
student(){ }
student (const student &O){
name=O.name;
}
};
int main(){
student obj;
obj.name.setString("ABC");
student obj1=obj;
obj1.name.setString("NEW");
cout << obj.name.getString() << endl;
cout << obj1.name.getString() << endl;
}
工作得很好。但是我试图调用析构函数来释放内存,当我写Destructor
时,程序不能正常运行。
~String(){
delete ptr;
}
我知道这可能是由于ptr = a;
,我已经测试了其他简短的例子和ptr=a引起的问题,当Destructor
调用。
- 一切都好,而不是析构器?
- 如何释放内存?
注意:这个程序只是为了理解深度复制。
有析构函数会有所帮助-但是正如在注释中指出的那样,您对内部存储的处理不一致(有时指向全局,有时指向动态内存)
所以你真正需要考虑的是:
- 使用一致的分配方案
- 在未分配时使用NULL
- 添加析构函数
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- 为什么此函数会导致内存泄漏?
- 在 C++ 库中使用cythonized python时内存泄漏
- 需要帮助查找内存泄漏
- 瓦尔格林德的内存泄漏使用新的
- 无法找出我的代码中的内存泄漏
- C++ 结构内部的unordered_map会导致内存泄漏问题吗?
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- Shared_ptr双链接列表内存泄漏
- C++ 在类中使用常量引用文本时 O2 内存泄漏