C++ 带指针指向指针的Memoryleak,C++;
我正在尝试为我正在使用的一个类创建一个Phonehandler系统,该任务指定我们在Phonehandler类中为Phone对象使用一个指向指针的指针,并且存储Phone的数组从一开始就有两个Phone的大小,并且可以在以后扩展。我的相关(?)代码如下: PhoneHandler.h PhoneHandler.cpp(构造函数) 我的代码包含了比这更多的东西,但是我没有在任何其他地方编写“new”,所以memoryLeak是在构造函数中分配的。我制作了一个析构函数,如下所示: PhoneHandler.cpp(析构函数)C++ 带指针指向指针的Memoryleak,C++;,c++,memory-leaks,pointer-to-pointer,C++,Memory Leaks,Pointer To Pointer,我正在尝试为我正在使用的一个类创建一个Phonehandler系统,该任务指定我们在Phonehandler类中为Phone对象使用一个指向指针的指针,并且存储Phone的数组从一开始就有两个Phone的大小,并且可以在以后扩展。我的相关(?)代码如下: PhoneHandler.h PhoneHandler.cpp(构造函数) 我的代码包含了比这更多的东西,但是我没有在任何其他地方编写“new”,所以memoryLeak是在构造函数中分配的。我制作了一个析构函数,如下所示: PhoneHand
但它在析构函数的第一行崩溃了。所以我需要关于构造函数或析构函数的帮助,也许两者都需要。如果有必要,请随时向我索取更多代码,但我认为问题出在这段代码中的某个地方。谢谢
删除[]phomes
不会导致任何崩溃
delete phomes
导致崩溃。delete[]phomes
不会导致任何崩溃
delete phomes
导致崩溃。delete[]*手机代码>要与constructor.BTW保持一致,也不要忘记5/3/0规则。(复制/移动/分配)。不要试图成为一名教师。额外的间接性是无用和有害的(如您所见),而动态分配的数组只是一种糟糕的做法。有std::vector
。你删除手机两次。显然,您不会分配两次电话。(因为phones
的值不能从两个不同的分配呼叫返回。)如果我只有delete[]*电话,我会收到错误消息“\u BLOCK\u TYPE\u IS\u VALID(pHead->nBlockUse)”。但我仍然有记忆库delete[]*手机代码>要与constructor.BTW保持一致,也不要忘记5/3/0规则。(复制/移动/分配)。不要试图成为一名教师。额外的间接性是无用和有害的(如您所见),而动态分配的数组只是一种糟糕的做法。有std::vector
。你删除手机两次。显然,您不会分配两次电话。(因为phones
的值不能从两个不同的分配呼叫返回。)如果我只有delete[]*电话,我会收到错误消息“\u BLOCK\u TYPE\u IS\u VALID(pHead->nBlockUse)”。但是我仍然有memoryleaks如果我只有delete[]手机,它会给我“检测到堆损坏”作为错误消息,但是我仍然有memoryleaksdelete[]手机
是UB,因为phones
是由new
分配的,而不是new[]
如果我只有delete[]手机,它会给我“检测到堆损坏”改为作为错误消息,但我仍然有内存aksdelete[]phones
是UB,因为phones
是由new
分配的,而不是new[]
Phone **phones;
PhoneHandler::PhoneHandler()
{
this->phones = new Phone*;
*phones = new Phone[2];
}
PhoneHandler::~PhoneHandler()
{
delete[] phones;
delete phones
}