C语言错误: HEAP CORRUPTION DETECTED

程序源代码:

//写文件两种方式(文本文件和二进制文件)#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>//文本写文件
int writeWord(const char *path,const char *pword){int ERRO_MSG = 0;if (path == NULL){ERRO_MSG = 1;printf("path==NULL erro msg:%d\n", ERRO_MSG);return ERRO_MSG;}if (pword == NULL){ERRO_MSG = 2;printf("pword==NULL erro msg:%d\n", ERRO_MSG);return ERRO_MSG;}//定义文件指针FILE *fpw=NULL;//打开文件fpw = fopen(path, "w");//w 打开只写文件,若文件存在,则文件长度清零,即文件内容会消失,若文件不存在则建立该文件//判断文件是否打开成功if (fpw==NULL){ERRO_MSG = 1;printf("文件打开失败 fpw==NULL erro msg:%d\n", ERRO_MSG);return ERRO_MSG;}//开始写文件
    fputs(pword, fpw);//关闭文件if (fpw!=NULL){fclose(fpw);}return ERRO_MSG;
}//文件读文件
char ** readtxt(const char *path)//二级指针做输出
{int ERRO_MSG = 0;if (path==NULL){ERRO_MSG = 1;printf("path==NULL erro msg:%d\n", ERRO_MSG);//return ERRO_MSG;
    }//定义文件指针FILE *pfr = NULL;//打开文件pfr = fopen(path, "r");if (pfr==NULL){ERRO_MSG = 3;printf("pfr==NULL erro msg:%d,文件路径:%s\n", ERRO_MSG, path);//return ERRO_MSG;
    }//开始读文件//1.定义文件缓存数组char bufarr[100] = { 0 };//2.0 获取文本具体行数//2.1 定义临时变量int index = 0;//2.0定义返回二维数组char **resbuf = (char **)malloc(sizeof(char *)*5);//读文件while (!feof(pfr)){//feof()如果文件结束,则返回非0值,否则返回0memset(bufarr, 0, sizeof(char));fgets(bufarr, 100, pfr);char *bufstr1 = (char *)malloc(sizeof(char)*strlen(bufarr));//拷贝字符串
        strcpy(bufstr1, bufarr);resbuf[index] = bufstr1;index++;//resbuf = (char **)realloc(resbuf, sizeof(char *)*(index + 2));
    }resbuf[index] = NULL;return resbuf;
}void main(){//定义文件路径char *path = "E:\\Test\\CwordTest\\";//只适用于windowchar *path1 = "E:/Test/CwordTest/a1.txt";//writeWord(path1, "asfasdfasdgafdsgadf\r\n打倒日本帝国主义和所对符合大家的哟撒\r\ndsafgshfetgrhet");char **pdata = NULL;pdata=readtxt(path1);int index = 0;if (pdata!=NULL){while (pdata[index] != NULL){printf("%s\n", pdata[index]);//释放内存free(pdata[index]);pdata[index] = NULL;index++;}free(pdata);pdata = NULL;}system("pause");
}

 

报错页面

 

 

错误解析:

 这个错误是在释放字符串指针的时候报错,具体行数如图

错误原因:

通过对错误进行百度,我理解了这个错误的原因是,释放一个字符串指针,但是这个字符串指针被破坏了,举例说明:

char *str=(char *)malloc(sizeof(char)*10);//分配了10个字节大小的内存空间

strcpy(str,"1234567890");//字符串拷贝,字符串”1234567890“是11个字符,这个拷贝操作会破坏字符指针str,此时会拷贝11字节到str指向的内存空间里,超过了原来分配的10个字节大小的内存空间

如果这时候用free(str);释放内存就会报错  ---HEAP CORRUPTION DETECTED

 

错误产生原因:

这个错误产生的原因就是对strlen()这个函数理解的不到位,举例:

char bufarr[100] = "1234567890";
printf("%d\n", strlen(bufarr));

打印出10,但是如果你分配字符串应该分配11个,留一个字节给'\0'

而我上面就犯了这个错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

您不能不知的ToString()方法

1.1.1 摘要 相信大家对ToString()方法再熟悉不过了&#xff0c;由于该方法是.NET程序中最常用的方法之一&#xff0c;我们除了可以直接调用ToString()方法之外&#xff0c;.NET中的某些方法也隐式调用ToString()方法&#xff08;WPF&#xff0c;Windows Form和Silverlight等&am…

微信转账一次显示两个_微信为啥分红包和转账两大功能?这4个区别你要知道,望相互转告...

众所周知&#xff0c;自从移动支付普及之后&#xff0c;支付宝、微信就已经成为人们手机中必备的APP&#xff0c;其中微信更是具备社交、支付等一系列功能&#xff0c;所以在国内吸引了超十一亿用户的使用&#xff01;当我们节假日、过年时&#xff0c;很多用户都喜欢给亲朋好友…

java 正则提取及替换字符串

2019独角兽企业重金招聘Python工程师标准>>> <% page import"java.util.regex.Pattern" %><% page import"java.util.regex.Matcher" %><% page import"java.util.List" %><% page import"java.util.Array…

使用R语言绘制中国地图

R语言环境 R3.1.1 Windows8.1 需要安装的packages: maptools,gp 绘图所需要的数据 中国地图的GIS数据 &#xff08;可以此下面的网址下载) http://cos.name/wp-content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip 是一个压缩包&#xff0c;完全解压后包含三个文件&am…

ASP.NET MVC 5 学习教程:控制器传递数据给视图

起飞网 ASP.NET MVC 5 学习教程目录&#xff1a; 添加控制器添加视图修改视图和布局页控制器传递数据给视图添加模型创建连接字符串通过控制器访问模型的数据生成的代码详解使用 SQL Server LocalDBEdit方法和Edit视图详解添加查询Entity Framework 数据迁移之添加字段添加验证…

如何将ListT转换相应的Html(xsl动态转换)(二)

一、前言 紧跟着上一篇随笔&#xff0c;本文主要涉及到如何将xml与xsl动态转换成html&#xff0c;这个才是最关键的地方&#xff0c;所有的内容都是围绕这个主题来进行开展的。根据指定的xsl样式将List<T>转换相应的Html&#xff0c;相关的随笔如下&#xff1a; &#xf…

win10大文件无法移动到U盘

想着把自己的一些文件整理整理&#xff0c;发现稍微大点的文件竟然不能copy到U盘&#xff0c;百度了一番&#xff08;不好意思&#xff0c;最近百度犯错查的正狠^_^&#xff09;,发现因为U盘的格式不是NTFS,只要把U盘格式改为NTFS就可以copy大文件了。 方法一&#xff1a;用命令…

为多孔介质的当量直径_新型纳米多孔碳材料在催化剂载体方面的应用

成分&#xff1a;基本成分为碳91-95%&#xff0c;氧4-8%&#xff0c;氢1%&#xff0c;具有良好的导电性&#xff08;2-10 S/cm&#xff09;和优良的化学稳定性。 结构&#xff1a;内部是三维贯通的纳米孔道结构&#xff0c;每个孔与周围12个孔相连&#xff0c;孔道结构有序&…

替换空格

题目描述&#xff1a; 请实现一个函数&#xff0c;将一个字符串中的空格替换成“%20”。例如&#xff0c;当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 时间复杂度o(n)的算法 先遍历一次字符串统计出空格的总数&#xff0c;计算出替换之后的字符串的总长…

备份数据 宝塔linux_宝塔面板旧版本升级教程汇总—升级宝塔面板

往期教程&#xff1a;宝塔面板教程&#xff08;1&#xff09;基于云服务器搭建宝塔面板教程最全详解宝塔面板教程&#xff08;2&#xff09;宝塔面板添加WordPress站点详细图文教程宝塔面板教程&#xff08;3&#xff09;基于宝塔面板成功配置网站SSL安全证书宝塔面板教程&…

Swift面向对象基础(上)——Swift中的类和结构体(下)

学习来自《极客学院》1 import Foundation2 3 class User {4 var name:String5 var age:Int6 init(name:String,age:Int){7 self.age age8 self.name name9 } 10 } 11 var u1 User(name:"何杨",age:23) 12 var u2 User(name:&qu…

ultraedit26 运行的是试用模式_如何并行运行你的自动化测试?

点击上方蓝色字关注我们~在自动化测试过程中的某些时刻&#xff0c;你将遇到一个共同的问题&#xff0c;那就是&#xff1a;需要花费很长时间去执行大量的UI自动化测试用例。最为有效地加速用例执行的方式就是并行地运行自动化测试。不幸地是&#xff0c;使各个自动化测试用例并…

在统计学中参数的含义是指_期刊论文中科研统计学缺陷分析及解决路径

中华医学科研管理杂志, 2018,31(5) 张策, 陈淑良, 王晓桐, 等摘要目的从期刊论文统计方法缺陷方面进行分析&#xff0c;并提出解决方案。方法资料采用中国知网文献数据库中的"基础科学"及"医药卫生科技"数据库的全部文献作为抽样源&#xff0c;限定时间为…

【转载】在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库 SQLDMO(SQL Distributed Management Objects&#xff0c;SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口&#xff0c;所以它可以执行很多…

雨棚板弹性法计算简图_钢结构工程量计算、报价要点

第一部分图纸一、图纸&#xff1a;根据图纸目录&#xff0c;清理核对图纸数量&#xff0c;检查是否有遗漏。二、建筑施工图1. 设计总说明&#xff08;1&#xff09; 建筑面积、结构形式、柱距、跨度、结构布置情况&#xff1b;&#xff08;2&#xff09; 工程量计算的范围&…

ubuntu制作usb启动盘

准备&#xff1a; u盘iso镜像文件--ubuntu-12.04.2-desktop-amd64.iso烧盘软件--unetbootin-linux-583步骤&#xff1a; 格式化u盘 查看u盘信息 #mount/dev/sdb1 on /media/KINGSTON type vfat (rw,nosuid,nodev,uid1000,gid1000,shortnamemixed,dmask0077,utf81,showexec,flus…

十分钟理解线性代数的本质_数学对于编程来说到底有多重要?来看看编程大佬眼里的线性代数!...

本文提出了一种观点&#xff1a;从应用的角度&#xff0c;我们可以把线性代数视为一门特定领域的程序语言。我们一起来看看&#xff01;文章有点偏理论讨论&#xff0c;可能比较枯燥&#xff0c;对于一名程序员&#xff0c;你如果看下去&#xff0c;你将会有不一样的收获&#…

Linux Socket学习--套接口的类型和协议

我们首先来说一下PF_INET和AF_INET&#xff0c;虽然标准提倡在指定demain参数的时候&#xff0c;优先使用PF_INET&#xff0c;但是大量已经编写的c代码遵循旧的协议。目前情况是AF_UNIXPF_UNIX&#xff0c;AF_INETPF_INET。但是将来是不是这样不好说啊。 不同于socketpari函数的…

8266串口调试助手_200行Python代码实现串口调试助手(2) 界面构建

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是串口调试工具pzh-py-com诞生之界面构建。一个软件的UI界面是非常重要的&#xff0c;这是软件与用户交互的接口&#xff0c;软件功能即使再强大&#xff0c;但如果没有清晰的UI界面&#…

权限访问控制设计

一、前言 之前的博客一直都还没写到框架的实现及权限系统&#xff0c;今天开始写我的权限系统&#xff0c;我以前做过的项目基本上都有权限管理这个模块&#xff0c;但各个系统都会有一些不太一样&#xff0c;有些简单点&#xff0c;有些稍微复杂一点&#xff0c;一句话&#x…