关于 释放堆内存出错的 问题
2015-06-07 11:44
239 查看
当我们在申请堆内存的时候 如果申请的空间小于我们预定的空间 然后我们释放的空间多于我们申请的空间
如 char p[10];
cin>>p; (假设是tao)
int len=strlen(p);
char *p2=new char[len];
strcpy(p2,p);
cout<<p2<<endl;
delete []p2;
此时VC 6.0会报错
Normal block
那是因为strcpy会将 tao和 ‘/0’
复制给p2 但是我们申请的空间只有
3个 所以当我们释放的时候 就会释放那个
不是我们申请的 所以编译器就会报错
对于VS2013 则会报错
CRT detected that application wrote memory after end of heap buffer
如 char p[10];
cin>>p; (假设是tao)
int len=strlen(p);
char *p2=new char[len];
strcpy(p2,p);
cout<<p2<<endl;
delete []p2;
此时VC 6.0会报错
Normal block
那是因为strcpy会将 tao和 ‘/0’
复制给p2 但是我们申请的空间只有
3个 所以当我们释放的时候 就会释放那个
不是我们申请的 所以编译器就会报错
对于VS2013 则会报错
CRT detected that application wrote memory after end of heap buffer
相关文章推荐
- 如何搭建X5本地应用打包服务器
- hbmy周赛1--A
- 练习作品8:批量生产卡密
- Android中的五大布局
- Codeforces #306 Div 2 简要题解
- Android R.java文件丢失
- 如何利用好AD查询工具
- Spring MVC 教程
- ListView Button ImageView 里应用selector选择器切换图片并保持住
- Linux内核与驱动开发学习总结:主设备号和次设备号(二)
- Linux内核与驱动开发学习总结:DMA与中断(一)
- EM (Expectation Maximization) 算法理解
- [准备篇4]VMWare搭建Openstack——配置OpenStack镜像源
- URAL 1224. Spiral (规律)
- ThinkPHP隐藏index.php出现No input file specified的解决方法
- 【leetcode】Count Primes
- [镜像制作]VMWare搭建Openstack——Ubuntu怎么制作最小的镜像文件(二)
- [leetcode] Remove Element
- 动态存储管理
- 练习作品7:批量做字库 识别码