我在嵌入式应用程序中遇到一些内存泄漏问题,在查看代码时,我发现当 getaddrinfo()
返回非-零:
s = getaddrinfo(hostname, port, &hints, &result);
if (s != 0) {
log_error();
} else {
// do stuff
freeaddrinfo(result);
}
这会导致内存泄漏吗?我试图查看手册页,但没有明确说明。
最佳答案
规范并没有说明如果失败则不分配 result
,因此符合规范的实现似乎可以这样做。
为什么不无条件释放它?
result = 0;
s = getaddrinfo(hostname, port, &hints, &result);
if (s) {
// log error
} else {
// success
}
if (result) {
freeaddrinfo(result);
}
理想情况下,您可以在不检查 result
是否为 NULL 的情况下调用 freeaddrinfo(result)
,但尽管标准暗示这是可以的,但我不会这样做指望它。
关于c - 当 getaddrinfo() 返回非零值时,是否分配了 struct addrinfo **res?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035407/