gpt4 book ai didi

c - getaddrinfo 中的 malloc 校验和不正确

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:26 25 4
gpt4 key购买 nike

我经常(大约 70% 的时间)收到错误

malloc: *** error for object 0x1567c574: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

在这行代码中

getaddrinfo(baseServer, "http", &hints, &serverinfo);

现在,当我检查这些值时,baseServer 是一个有效的字符串(通常是 www.a-cstudios.com),"http" 显然永远不会被释放导致此错误,hints 是一个 struct addrinfo,它应该是正确的值,并且 serverinfoNULL,我相信它应该是。如果所有这些值都是正确的,并且我从未在此处释放任何对象,为什么会在这一行中出现错误?

最佳答案

问题不在于你在这里释放了一些东西。问题甚至不在这里getaddrinfo()函数必须为其返回的 addrinfo 结构的链表分配存储空间,因此它必须调用 malloc()在引擎盖下。 malloc() 注意到您程序中的其他地方,某些内容已写入空闲 block ,并友好地报告它。

您可以虔诚地执行一项策略,即在释放指针后立即将指针设置为 NULL,从而帮助防止此类事情(写入您不再拥有的内存)。还有,valgrind。

好吧,你可以通过在释放它们之后不使用指针来帮助防止这种事情发生,但是确保总是在释放之后立即将指针设置为 NULL 将帮助你找到正在使用它们的地方。

关于c - getaddrinfo 中的 malloc 校验和不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17938432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com