作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个大代码,当调用析构函数时程序崩溃了。我正在指定失败的地方:
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_methods
和 m_blocks
。
最佳答案
m_noBlocks
未初始化,因此没有人可以预测您有多少指针可以存储。
关于c++ - 析构函数调用删除函数时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111139/
我是一名优秀的程序员,十分优秀!