_BLOCK_TYPE_IS_VALID(pHead->nBlockUse问题解析
来源:互联网 发布:淘宝买港版苹果手机 编辑:程序博客网 时间:2024/05/30 05:41
在用vs写程序,遇到了一些问题,_BLOCK_TYPE_IS_VALID(pHead->nBlockUse是其中的一个,后来在网上查了一下,得到相关信息,特记录一下,以备查看。
例如以下程序可能导致这个错误:
#include<iostream>using namespace std;int main(){int j=3;int *a=new int;cout<<a<<": "<<*a<<endl;cout<<&j<<": "<<j<<endl;a=&j;cout<<a<<": "<<*a<<endl;cout<<&j<<": "<<j<<endl;//delete a;system("pause");return 0;}
运行结果:
但是上面程序存在一个问题,就是a是一个堆内存,但是没有释放,即delete a,当我去掉注释的delete a;时,却出现了
没错,就是这个错误,那么问题出在那里呢?
其实,在给指针a复制时,a=&j;而对于局部变量j来说,是存储在桟内存中的,所以这个指针a也指向了桟内存中存放的值的地址,那么存取这个值都是没有错的,最关键的,就是释放,因为桟内存是程序结束后自动释放的,而堆内存需要显式释放,如果在程序结束后,j变量对应的值已经不存在了,那么此时的delete就释放了一个已经被释放的内存,则会出现错误。
如有错误,请指正。
- _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)
- _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)
- Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse
- 【Debug】_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
- c++ 析构函数的问题,_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
- 简介python装饰器
- 一个正负数组,求其最大的连续子串和
- 三十、组、指针和字符串:指针用作函数参数、指针型函数和函数指针
- 非常全的类库
- javaIO 流分析总结
- _BLOCK_TYPE_IS_VALID(pHead->nBlockUse问题解析
- 排序大汇总
- 进程
- 关于String字符串的一些学习总结
- java方法中需要用到正则表达式的地方
- redis 在linux上安装
- ScrollView
- LeetCode | Unique Paths
- 把js转C#