【问题标题】:_BLOCK_TYPE_IS_VALID(pHEAD->nBlockUse) error [duplicate]_BLOCK_TYPE_IS_VALID(pHEAD->nBlockUse) 错误 [重复]
【发布时间】:2014-07-31 19:05:34
【问题描述】:

我是 C++ 新手(我最熟悉 node.js 和 Java,但之前也做过一些 Python),并且正在努力理解指针。以下示例在使用调试符号编译时会生成运行时错误。

#include <iostream>

void main(){
    int number = 0;
    int * numberPtr = &number;
    * numberPtr = 1;

    std::cout << number;
    delete numberPtr;
}

还有错误信息:

Debug Assertion Failed!

Program: C:\path\to\executable\main.exe
File: f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp

Expression: _BLOCK-TYPE_IS_VALID(pHead->nBlockUse)

FWIW,我在使用 VS 2008 和 2013 编译时遇到了同样的错误。

【问题讨论】:

  • 你正在删除一个你没有动态分配的对象。

标签: c++ visual-studio visual-studio-2008 visual-studio-2013


【解决方案1】:

正如 Oli Charlesworth 所说,你没有动态分配numberPtr,因此你不能delete 它。如果您打算在C++ 中进行编码,我建议您阅读有关newdelete 和动态内存分配的信息。

【讨论】:

  • 我建议你不要。还有更好的选择,比如std::stringstd::unique_ptr&lt;&gt;
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2015-02-11
  • 2015-09-22
  • 2013-11-10
相关资源
最近更新 更多