我一直在编写一个代码,其中有很多类。我在构造函数中为不同的对象数组分配内存。但是,当我认为一切正常时,我遇到了一个奇怪的错误。例如,假设我有一个名为 Points 的类,它有一个名为 data 的双点数组。
好的,我现在发布所有代码:
class Points
{
double *data;
Points::Points()
{
data = new double [C_NUMBER_OF_POINTS];
}
Points::~Points()
{
delete [] this->data;
}
};
调试后发现错误出在this指针上,不知道是什么原因?析构函数被调用来删除数据,而对象正在被销毁,但它仍在内存中。我的问题是为什么会这样?
我得到的错误基本上是由于内存处理不当
HandTracker.exe 中 0x778f15de 处未处理的异常:0x00000000:操作成功完成。块引用
如果我删除此指针意味着如果我使用以下析构函数,则错误已修复
Points::~Points()
{
delete []data;
}
我的问题不完全是关于如何处理内存泄漏,而是与这个指针相关的这个特定问题。这个指针背后的机制是什么使它给出这个错误?