c语言调用free,提示已触发了一个断点。

c语言调用free,提示已触发了一个断点。,第1张

使用malloc申请一段内存,在使用的时候没有任何问题,但是在执行free使程序直接终止了,最后发现使写数据时越界了,使用malloc分配内存时会多分配一些内存用于存储申请到的内存信息,在逗高陆free的时候会读取这段内存中的信息,写越界会导致这段信息被覆盖,使free无法正确的释放内存,导致程序出错。出现这种情况的原因有很多,我念搜出现这个问题的原因是在为结构体分配内存时使用的是指针类山顷型,但是却被当作结构体来使用,这个问题在编译的时候是不会有提示的,很难排查,所以平时编码的时候还是要多注意。

void rearin()

{

lianbiao *p

p=(lianbiao*)malloc(sizeof(lianbiao*))这袭磨个有问题.

改成这样p=(lianbiao*)malloc(sizeof(lianbiao)).

下面的删除你改成这样基禅悉看看 我没调试。

if(a==NULL) printf("no\n")

else{

if(b == a)//就多加这一个IF

{top = a->next

free(a)

return

}

while(b->next!=a)

b=b->next

a=a->next

free(b->next) //没错,就是此处有问题

b->搏乎next=a


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存