析构函数释放内存时出现_BLOCK_TYPE_IS_VALID错误
错误信息截图:
原因:
1.内存泄漏;所以当程序退出时,系统会收回分配的内存,于是调析构函数,由于内存已被错误地释放,于是就会出现“Debug Assertion Failed”的错误。
2.这个assert说明什么问题呢?
说明有一块内存在被释放的时候,它的头部里面的信息已经被改掉了,和预期的不一样。内存分配的程序往往在被分配出的内存块头部放上一些校验信息。这个信息内存的用户是不知道也不应该修改的。这样,在内存被释放的时候,内存分配程序就可以验对这个头部信息是否被改过了。若被改过,就说明发生了内存corruption. 这种corruption有两种可能性:1)有人在内存越界写东西;或者:2)这块内存已经被释放了,又被重复释放了一次。 (在第一次被释放中,是内存分配程序改掉了头部信息)。
3.pHead_>nBlockUse就可能是空指针,或它指向的东西已经不存在了。
解决办法:当遇到这样的问题时,不要着急,由于每个人的代码都不同,没有固定的解决办法,唯一的解决办法就是“冷静下来”,然后,仔细检查代码,检查自己的释放内存的地方是否有问题,是否会发生冲突。
析构函数释放内存时出现_BLOCK_TYPE_IS_VALID错误的更多相关文章
- 使用C++为对象分配与释放内存时的几个好习惯
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/ 最近在为公司的项目写内存泄漏定位工具,遇到一些关于C++构造与析构对象的问题,在此记录一下 ...
- free如何知道释放内存长度:vs与glibc分配内存时编译器内部处理
鉴于网上这个资料实在太少,将以前整理过却未完全的一篇文章贴出来,希望大牛指正vs下内存管理方式.可联系gaoshiqiang1987@163.com vs分配内存 vs没有源码,编译器在分配内存时,分 ...
- delphi dispose释放内存的方法 New 和 GetMem 的区别
来自:http://blog.sina.com.cn/s/blog_4bc47d2301018trf.html -------------------------------------------- ...
- [CareerCup] 13.9 Aligned Malloc and Free Function 写一对申请和释放内存函数
13.9 Write an aligned malloc and free function that supports allocating memory such that the memory ...
- delphi dispose释放内存的方法
delphi dispose释放内存的方法 2010-06-08 19:39:59| 分类: DELPHI | 标签: |举报 |字号大中小 订阅 dispose使用方法的简单介绍在本文末 ...
- C/C++ 错误笔记-如果要释放内存,必须拿到内存的首地址进行释放
例:修改字符串的第三个字母为a #include <stdlib.h> #include <string.h> #include <stdio.h> #pragma ...
- C++ STL map容器值为指针时怎么释放内存
最近在使用STL中map时,遇到了一个问题,就是当map中值为指针对象时怎么释放内存? // 站点与TCP连接映射表 (key为ip_port_stationCode, value为 clientSo ...
- 在用free()函数释放指针内存时为何要将其指针置空
在通过free()函数释放指针内存之后讲其指针置空,这样可以避免后面的程序对与该指针非法性的判断所造成的程序崩溃问题.释放空间,指针的值并没有改变,无法直接通过指针自身来进行判断空间是否已经被释放,将 ...
- C/C++动态分配与释放内存的区别详细解析
以下是对C与C++中动态分配与释放内存的区别进行了详细的分析介绍,需要的朋友可以过来参考下 1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配 ...
随机推荐
- eclipse颜色配置
Eclipse颜色主题插件:Eclipse Color Theme http://blog.sina.com.cn/s/blog_674212810101go8x.html 一个很赞的eclipse插 ...
- 找出程序cpu使用率高的原因
确定是CPU过高 使用top观察是否存在CPU使用率过高现象 找出线程 对CPU使用率过高的进程的所有线程进行排序 ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |g ...
- 支付标记化(Tokenization)技术
道客巴巴->支付标记化(Tokenization)技术介绍 百度文库->中国银联支付标记化技术指引 NFC产业网->银联技术专家解答支付标记化Token技术 百度搜索->Tok ...
- Java API ——包装类
1.包装类的概述 · 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据. · 常用的操作之一:用于基本数据类型与字符串之间的转换. · 基本类型和包装类的对应 为了对基本数据 ...
- 一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录
开发环境:Ubuntu 12.04 开发板:mini2440 256M NandFlash 64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3点此可下载 BusyBox版本: ...
- stdio.h及cstdio的区别
2013-07-04 16:45:19 找了很多资料,没有说的很明白的,下面是老外的一篇文章,解释的比较清楚,后面给出翻译. Clarifying stdio.h versus cstdio 转自:h ...
- Compiler options do not specify -mv64+, but configuration is for C64x+
2013-06-20 10:02:47 错误报告: "pin_connect_cfg.s62", ERROR! at line 365: [ ***** USER ERROR ...
- spring + mybatis 注解式事务不回滚的原因分析 @Transactional
在一个项目中发现spring的事务无法回滚. DEBUG: org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.ses ...
- 银行爱“IOE”爱得有多深
本文由阿尔法工场欧阳长征推荐 导读:如果银行是一家海鲜酒楼,把IBM换掉相当于大搞一次装修,把Oracle换掉相当于把厨子和菜谱全部换掉,把EMC换掉相当于把放食材工具的储物间换个地方.难度在于,这海 ...
- 【Markdown】Writing on Github - 在GitHub上写作
Writing on GitHub https://github.com/shalliestera/Writing-on-GitHub-Chinese-Translation Markdown 基本语 ...