CString -> 内存泄漏数组?
Array of CString -> Memory Leak?
我的类中有一个CStrings数组作为成员:
...
private:
CString mStrings[7];
...
尽管类的析构函数被正确调用,但我的分析工具告诉我,七个 mString 中的每一个都存在内存泄漏(每次我分配和释放我的类时)。
我以为CStrings自己管理他们的记忆。我将它们放在数组中的事实会改变这里的任何内容吗?
不,这不应该泄漏。除非您分配new
或new[]
(或malloc
)并且不释放(delete
,delete[]
或free
)内存,否则您不会得到任何泄漏。
在您的情况下,阵列处于自动存储中,因此会自动清理。此外,CString
会自动管理他们的内存。要么是误报,要么是其他一些代码导致了问题。
编辑 - 尽管CString
不会泄漏,但误报可能并非如此。你有机会初始化为:
unsigned char* x = new unsigned char[10];
CString str(x);
忘记delete[] x
,或类似的东西?
编辑 2 - 也许错误出现在类的未删除实例上:
struct X
{
private:
CString mStrings[7];
};
//...
X* x = new X;
我将在这里做出一个信念的飞跃,CString
实际上是一个char *
。
如果这是强制转换并且类已分配它们,则析构函数需要释放它们。
该对象的删除将是浅层删除。有问题。
但最后一点 - CString
的类型是什么?
相关文章:
- 为什么调用堆栈数组会导致内存泄漏
- 为什么并行读取数组会导致内存泄漏?
- C++中的动态数组:Valgrind泄漏
- 模板化动态数组上的内存泄漏
- 温度参数数组的内存泄漏
- 为什么泄漏内存比在动态数组上执行 delete[] 慢
- 瓦尔格林德内存泄漏与动态数组C++
- 如何修复Valgrind报告的C 数组驱动器中的内存泄漏
- 返回指针(数组)(C++)时可能出现内存泄漏
- 带有指针的 2D 数组中的内存泄漏
- 内存泄漏 C++ 数组列表
- 从堆中删除c++数组和内存泄漏
- 由于动态数组而导致的哈希映射内存泄漏
- 如果我在C++中分配一个带有运算符 new[] 的对象数组,但单独释放它们是否仍然构成内存泄漏
- 在C++中,返回从本地字符数组创建的字符串是否会导致内存泄漏或未定义的行为
- Valgrind在定义字符*数组时报告内存泄漏
- char*数组内存泄漏
- 使用float 2d数组的C++内存泄漏,如果我使用double,则会消失
- 返回导致内存泄漏的wchar_t数组
- CString -> 内存泄漏数组?