gpt4 book ai didi

c++ - 等量的构造函数和析构函数调用是否确保没有内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 00:55:43 25 4
gpt4 key购买 nike

假设我们有一个名为 memoryCounter 的类,它试图捕获由 MyClass 类引起的内存泄漏。

class memoryCounter
{
public:
static int MyClassCount;
};
int memoryCounter::MyClassCount = 0;

我们还假设我们将以下行放在 MyClass 的构造函数和析构函数中(以及它具有的任何其他构造函数,同时假设我们不修改 MyClassCount 构造函数/析构函数之外的任何其他地方):

MyClass()
{
memoryCounter::MyClassCount++;
}
virtual ~MyClass()
{
memoryCounter::MyClassCount--;
}

现在,我们可以绝对确定如果 memoryCounter::MyClassCount 包含零,那么到目前为止我们分配的所有内存都已释放并且没有泄漏吗?或者是否会出现变量包含零的情况,但会分配我们没有释放的内存(请考虑“MyClass”也是基类或派生类的情况)?

最佳答案

不,你不能。也可以有其他构造函数(至少是复制构造函数)。你不数他们。

此外,static 变量的销毁也不是那么容易,因为它们是在 main 退出后销毁的

关于c++ - 等量的构造函数和析构函数调用是否确保没有内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11757456/

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