gpt4 book ai didi

c++ - 析构函数调用删除函数时程序崩溃

转载 作者:行者123 更新时间:2023-11-28 03:12:18 24 4
gpt4 key购买 nike

我正在处理一个大代码,当调用析构函数时程序崩溃了。我正在指定失败的地方:

Application::~Application()
{
for ( int blockId=0; blockId< m_noBlocks; blockId++ ) {
if ( m_blocks[ blockId ] ) {
delete m_blocks[ blockId ]; //error here
m_blocks[ blockId ] = NULL;
}
if ( m_methods[ blockId ] ) {
delete m_methods[ blockId ];
m_methods[ blockId ] = NULL;
}
}
}

程序恰好在“此处错误”中提到的删除操作处崩溃。但是,如果我评论该行,程序似乎运行良好。有人可以亮灯吗,可能是什么问题?

编辑:它们在构造函数中使用 new 进行分配。 m_noBlocks 定义了一个值,此处未指定:

Application::Application(){
m_blocks = new ZFSBlock*[m_noBlocks];
m_methods = new ZFSMethods*[m_noBlocks];

for ( int blockId=0; blockId< m_noBlocks; blockId++ ) {
m_methods[ blockId ] = NULL;
m_blocks[ blockId ] = NULL;
}
}

但是,稍后在代码的主要部分中实际分配了 m_methodsm_blocks

最佳答案

m_noBlocks 未初始化,因此没有人可以预测您有多少指针可以存储。

关于c++ - 析构函数调用删除函数时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111139/

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