C++程序运行完成的最后d出触发了一个断点是什么情况?

C++程序运行完成的最后d出触发了一个断点是什么情况?,第1张

不知道你有没有仔细看最后一张图右下角处,那里已经说明了原因。

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无法正确的释放内存,导致程序出错。出现这种情况的原因有很多,我出现这个问题的原因是在为结构体分配内存时使用的是指针类型,但是却被当作结构体来使用,这个问题在编译的时候是不会有提示的,很难排查,所以平时编码的时候还是要多注意。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11725198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存