Heap corruption detected: after normal block (#178) at xxxx
CRT detected that application wrote data to memory after end heap buffer.
简单翻译一下,就是你在new来的内存区域之外写入了数据。
你没有贴代码文本,我不会手敲它们,你可以自己检查这种情况。
举个例子,图2,46行:memset为t_size+1个字节清零,然鹅你只为temp new了t_size个字节。
其他地方可能还有,请逐一排查。
使用malloc申请一段内存,在使用的时候没有任何问题,但是在执行free使程序直接终止了,最后发现使写数据时越界了,使用malloc分配内存时会多分配一些内存用于存储申请到的内存信息,在free的时候会读取这段内存中的信息,写越界会导致这段信息被覆盖,使free无法正确的释放内存,导致程序出错。出现这种情况的原因有很多,我出现这个问题的原因是在为结构体分配内存时使用的是指针类型,但是却被当作结构体来使用,这个问题在编译的时候是不会有提示的,很难排查,所以平时编码的时候还是要多注意。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)