[转]VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
2017-01-04 09:17
1011 查看
[picture]
VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
header_from_block(...) 返回 0x2FD0020
_BLOCK_TYPE_IS_VALID宏用来检测这个内存块在当前堆上是否有效,但是这里的指针是一个临时变量,临时变量是在栈上分配的,函数清理栈时会自动回收这些内存,程序员无需管理。
程序员new 和 malloc申请的内存是位于堆上面,程序不会自动清理,这就是区别所在。
因此,检查你所释放(delete 或 free)的那个指针,不是动态申请的就别画蛇添足去释放了。
老大遇到的情况就有点莫名其妙了,new了一段内存,然后调用delete[]释放,啥都没干也会崩溃。大家分析了下,代码本身是没有原因的,这时候他检查工程属性发现:大部分工程都是win32的,这个dll却是使用的mfc dll(说道MFC我想说下,这都什么年头了,如果是刚入行的就不要学MFC了,没意义没前途)。工程属性改正后,重新编译就好了。
VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
header_from_block(...) 返回 0x2FD0020
_BLOCK_TYPE_IS_VALID宏用来检测这个内存块在当前堆上是否有效,但是这里的指针是一个临时变量,临时变量是在栈上分配的,函数清理栈时会自动回收这些内存,程序员无需管理。
程序员new 和 malloc申请的内存是位于堆上面,程序不会自动清理,这就是区别所在。
因此,检查你所释放(delete 或 free)的那个指针,不是动态申请的就别画蛇添足去释放了。
老大遇到的情况就有点莫名其妙了,new了一段内存,然后调用delete[]释放,啥都没干也会崩溃。大家分析了下,代码本身是没有原因的,这时候他检查工程属性发现:大部分工程都是win32的,这个dll却是使用的mfc dll(说道MFC我想说下,这都什么年头了,如果是刚入行的就不要学MFC了,没意义没前途)。工程属性改正后,重新编译就好了。
相关文章推荐
- VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
- VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法 .
- VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
- 关于VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))的相关问题解决办法
- 解决VS中出现_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))的问题
- 解决VS中出现_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))的问题
- osg报错_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)的原因及解决办法
- VS _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- 【Debug】_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
- 内存值异常:_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))
- 内存报错:_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse))
- VS调试程序_ASSERTE(_CrtIsValidHeapPointer(pUserData))崩溃的原因以及解决方法
- [wxWidgets]_[初级]_[Debug Assertion Failure: BLOCK_TYPE_IS_VALID(pHead->nBlockUse) ]
- Qt 程序退出时断言错误——_BLOCK_TYPE_IS_VALID(pHead->nBlockUse),由setAttribute(Qt::WA_DeleteOnClose)引起
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse问题解析
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- 误操作:释放栈上空间 Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- 误操作:释放栈上空间 Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse问题解析