gpt4 book ai didi

c++ - CString 数组 -> 内存泄漏?

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:31 24 4
gpt4 key购买 nike

我有一个 CString 数组作为我类(class)的成员:

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

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

我认为 CStrings 自己管理它们的内存。我将它们放在数组中这一事实会改变这里的任何内容吗?

最佳答案

不,那不应该泄漏。除非使用 newnew[](或 malloc)进行分配并且不释放(使用 delete,delete[] or 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;

关于c++ - CString 数组 -> 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com