类中的内存泄漏C++
memory leak in C++ class
我定义了两个类CA和CB。 我想防止内存泄漏,但我不知道如何正确销毁 CB 类(假设内存泄漏来自它(。 mpz_t是 GMP 数据类型。 这是我的代码
class CA {
public:
void SetFoo (unsigned long int);
CA ();
CA (unsigned long int);
~CA ();
private:
mpz_t foo;
};
哪里
CA::CA () {
mpz_init (foo);
}
CA::CA (unsigned long int in) {
mpz_init (foo);
mpz_set_ui (foo, in);
}
CA::~CA () {
mpz_clear (foo);
}
void CA::SetFoo (unsigned long int in) {
mpz_set_ui (foo, in);
}
和
class CB {
public:
CB ();
~CB ();
private:
list <pair<uint16_t, CA*>> mylist;
};
哪里
CB::CB () {
pair<uint16_t, CA*> mypair;
CA* C = new CA [2];
C [0].SetFoo (100);
C [1].SetFoo (200);
mypair.first = 0;
mypair.second = &C[0];
mylist.push_front (mypair);
mypair.first = 1;
mypair.second = &C[1];
mylist.push_front (mypair);
}
CB::~CB () {
???
}
您可以使用std::unique_ptr
而不是常规指针。这将在每个元素销毁时自动释放内存。
typedef std::unique_ptr<Ca[]> CA_array;
list <pair <uint16_t, CA_array> > mylist;
或者,您可以循环访问元素并使用delete []
释放内存。
CB::~CB () {
for (auto &item : mylist)
delete [] item.second;
}
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- Klocwork Inside的资源泄漏
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- 为什么此函数会导致内存泄漏?
- 在 C++ 库中使用cythonized python时内存泄漏
- 需要帮助查找内存泄漏
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 瓦尔格林德的内存泄漏使用新的
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- 无法找出我的代码中的内存泄漏