误操作:释放栈上空间 Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
来源:互联网 发布:java界面布局工具 编辑:程序博客网 时间:2024/06/16 17:18
误操作:释放栈上空间
错误现象:
原因:
从框中内容能大概看出:Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse), 说明是内存块的类型不对, 什么情况下会有这种问题呢? 试验一下, 请看下面代码:
void test(vector<int*>* vecptr){ if (vecptr != NULL) { int nSize = vecptr->size(); for (int nIndex = 0; nIndex < nSize; ++nIndex) { delete vecptr->at(nIndex); vecptr->at(nIndex) = NULL; } delete vecptr; vecptr = NULL; }}
调用代码:
vector<int*> vec; int* ptr = NULL; for (int nIndex = 0; nIndex < 5 ; nIndex++) { ptr = new int; *ptr = nIndex; vec.push_back(ptr); ptr = NULL; } test(&vec);
我们看到, vec这个变量是在栈上申请的, 是临时的, 当传入test函数之后, 依次释放vector中的指针, 这是没有问题的, 但是, 在最后一步,我们将vector本身删除掉了, 这时, 这个错误就蹦出来了. 其原因很明显, delete只能删除堆上内存, 栈上的内存, 是不需要手动来释放的, 因此, 程序会说内存块的类型不对.
- 误操作:释放栈上空间 Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- 误操作:释放栈上空间 Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead->nBlockUse)
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) Exception
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse
- _BLOCK_TYPE_IS_VALID(phead->nBlockuse)错误
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)错误
- VS _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse
- C++ error:Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead->nBlockUse)
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse - 内存越界或重复释放
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse问题解析
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse问题解析
- 雪豹系统和SMB不兼容的问题的解决汇总
- Intel® 64 and IA-32 Architectures Software Developer's Manuals
- Archlinux 虚拟机 virtualbox-ose
- 时钟周期-指令周期-机器周期 以及三者之间的关系
- wince驱动程序:基于WinCE的I2C驱动程序设计
- 误操作:释放栈上空间 Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- WinCE的中断流驱动程序原理概要-代码分析
- WinCE的中断流驱动程序原理概要
- 螺旋矩阵的打印
- 基于WinCE的嵌入式系统注册表的研究
- ‘Advanced Global Illumination’reading notes 3
- WinCE中触摸屏驱动开发详解
- Delphi 打开文件夹方法
- C++标准程序库 笔记:第2章,第3章