free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因
报错的位置
void __cdecl _free_base (void * pBlock)
{ int retval = ; if (pBlock == NULL)
return; RTCCALLBACK(_RTC_Free_hook, (pBlock, )); retval = HeapFree(_crtheap, , pBlock);//最后一个箭头指到这儿,蛋疼!!!
if (retval == )
{
errno = _get_errno_from_oserr(GetLastError());
}
}
解决方案:
方案1
在运行结束后报错,基本都是内存释放的问题!
释放了一个指针,这个指针所指的内存,不是用malloc等内存管理函数分配的内存。
查看一下那个指针是啥东西。
是否已经施行过加减运算,或者干脆就是随便拿过来的一个数值,
或者一个不用释放的指针(指向局部变量的指针,指向全局变量的指针),
甚至是野指针。
方案2
C,C++ 兼容的分配释放堆内存的函数:
malloc,realloc
free
凡是malloc 分配成功的内存,一定要用free释放,这个只要求,内存地址不变就行,分配的指针的值是多少,释放是就必须还是多少。
C++专用:
由于C++分配和释放内存的运算符new delete会分别调用构造函数,析构函数;
所以要求必须配对使用,并且 指针类型和指针的值,delete 的必须和 new的相同,不然就“有可能”不争取
分配单个对象用 new, delete
class A{....};
A *pa=new A;//这里使用的是new 运算符!!
...... //这些代码,不可以改动pa的值
delete pa; //使用的是delete 运算符!!改动后这个释放就错了!
分配对象数组用 new[],delete[];例如
class A{....};
A *pa=new A[];//这里使用的是new[]运算符!!
...... //这些代码,不可以改动pa的值
delete []pa; //使用的是delete[]运算符!!改动后这个释放就错了!
ew分配的用free释放 是错误的,同样,malloc 分配的用delete释放也是错误的!
这里指的是,这样做逻辑上是错误的;
非常可能会出错,并不是说一定会出错;
但是不养成配对使用的习惯,很容易出错!!!!
参考文章
free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因的更多相关文章
- Couldn't load libPassword from loader:NDK开发中C文件编译成cpu对应的so类库时,找不到类库报错的原因之一
LogCat输出: 03-03 12:42:32.665: E/AndroidRuntime(32432): FATAL EXCEPTION: main03-03 12:42:32.665: E/An ...
- 01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题
2==解决vue2.0里面控制台包的一些语法错误. https://www.jianshu.com/p/5e0a1541418b 在build==>webpack.base.conf.j下注释掉 ...
- eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN
eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...
- Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification version
Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification ...
- wince6.0 编译报错:"error C2220: warning treated as error - no 'object' file generated"的解决办法
内容提要:wince6.0编译报错:"error C2220: warning treated as error - no 'object' file generated" 原因是 ...
- AndroidStudio3.0 注解报错Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor.
把Androidstudio2.2的项目放到3.0里面去了,然后开始报错了. 体验最新版AndroidStudio3.0 Canary 8的时候,发现之前项目的butter knife报错,用到注解的 ...
- centos 6.7 (UDEV,、etc/hosts)安装 RAC 11.2.0.4 报错处理
环境说明: db 11.2.0.4 os: centos 6.7 UDEV管理ASM 没有配置DNS服务器,采用/etc/hosts报错: 1. CVU(Cl ...
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">报错
https://blog.csdn.net/qq_36611526/article/details/79067159 今天遇到个问题 文件内引入某个资源 pom.xml头部http://maven.a ...
- maven项目解决pom.xml头部 http://maven.apache.org/xsd/maven-4.0.0.xsd报错的问题
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_36611526/article/d ...
随机推荐
- Java对字符串进行加密
package anli1; import java.util.Scanner; public class example { public static void main(String[]args ...
- Codeforces Round #326(Div2)
CodeForces 588A 题意:Duff喜欢吃肉,想在接下来的n天,每天都有Ai斤肉吃,但每一天肉的单价Pi不定,肉 可以保存不过期,现已知n天每天肉的斤数Ai,以及单价Pi,为了使每天都 ...
- poj 1035 纯正的字符串水
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22673 Accepted: 8258 De ...
- Linux自学系列 -- 常用指令的使用
1.查看目录下内容>ls //列出目录下的文件信息>ls -l //以“详细信息"查看目录文件>ls -a //查看目录“全部”(包括隐藏文件)文件> ...
- SQL视频总结
SQL是英文Structured Query Language的缩写,意思为结构化查询语言. SQL语言的主要功能就是同各种数据库建立联系,进行沟通.SQL被作为关系型数据库管理系统的标准语言. SQ ...
- [CF482B]Interesting Array
题目大意:构造一个序列$S$,有$m$条限制,每条为$l\;r\;q$,表示$\&_{i=l}^r S_i=q$ 题解:每条限制就把$[l,r]$内的数或上$q$,最后判断就行了 卡点:我又写 ...
- J2SE总结(一)-------容器
最近大家都在讨论容器以及如何在项目中去实际的应用它,由于之前对容器没有什么概念,所以把J2SE里面讲的容器的一些基础知识看了一下,总结一下最基本的东西. 围绕整章最核心的就属下面这张图了吧. 一.概念 ...
- SoundPool 播放提示音
SoundPool 一个声音播放的辅助类,从名字可以看出,它具有 “池”的能力,它先加载声音文件到内存,以支持多次播放声音文件. 特点 SoundPool适合 短小的 声音文件 SoundPool适合 ...
- [HDU_3652]B-number
题目描述 A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the ...
- 算法详解(LCA&RMQ&tarjan)补坑啦!完结撒花(。◕ˇ∀ˇ◕)
首先,众所周知,求LCA共有3种算法(树剖就不说了,太高级,以后再学..). 1.树上倍增(ST表优化) 2.RMQ&时间戳(ST表优化) 3.tarjan(离线算法)不讲..(后面补坑啦!) ...