CString数组 - >内存泄漏?

时间:2012-05-04 07:38:36

标签: c++ arrays memory-leaks cstring

我有一系列CStrings作为我班上的成员:

...
private:
 CString mStrings[7];
...

虽然类的析构函数被正确调用,但我的分析工具告诉我七个mStrings中的每一个都有内存泄漏(每次我分配和释放我的类时)。

我认为CStrings自己管理自己的记忆。我在数组中使用它们的事实是否在这里改变了什么?

2 个答案:

答案 0 :(得分:1)

不,那不应该泄漏。除非您使用newnew[](或malloc)进行分配并且未免费(使用deletedelete[]或{ {1}})记忆。

在您的情况下,阵列处于自动存储状态,因此会自动清理。此外,free会自动管理他们的记忆。要么是误报,要么是其他一些代码导致问题。

编辑 - 虽然CString没有泄漏,但误报可能并非如此。你有没有机会初始化为:

CString

忘了unsigned char* x = new unsigned char[10]; CString str(x); 或者类似的东西?

编辑2 - 对于未删除的班级实例,可能会出现错误:

delete[] x

答案 1 :(得分:0)

我将在这里实现一个信念的飞跃,CString实际上是char *

如果这是转换并且类已经分配了它们,那么析构函数需要释放它们。

删除该对象将是一个浅层对象。有问题。

但最后一点 - CString的类型是什么?