Pet*_*ryl 16 c c++ ubuntu valgrind getaddrinfo
我有这个代码来获取有关IPv4地址的信息:
struct addrinfo hints, *info = NULL;
char addr4[INET_ADDRSTRLEN];
memset(&hints, 0, sizeof(hints));
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = AF_INET;
if (!getaddrinfo(argv[hostPara], NULL, &hints, &info)) {
inet_ntop(AF_INET, &((const sockaddr_in *)info->ai_addr)->sin_addr, addr4, INET_ADDRSTRLEN);
}
if (info != NULL) {
freeaddrinfo(info);
}
Run Code Online (Sandbox Code Playgroud)
但如果我测试argv [hostPara]是"www.google.com"我从valgrind得到这个:
==3632== 168 bytes in 1 blocks are still reachable in loss record 1 of 1
==3632== at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3632== by 0x524B5B8: make_request (check_pf.c:249)
==3632== by 0x524BA53: __check_pf (check_pf.c:342)
==3632== by 0x5201134: getaddrinfo (getaddrinfo.c:2458)
==3632== by 0x40186B: main (trace.cc:214)
Run Code Online (Sandbox Code Playgroud)
如果argv[hostPara]是"www.ubuntu.com"没有内存泄漏.这个神奇的行为是什么?
Jon*_*tez 11
看一下gblic,它是关于ipv6(看249行)的物体捕捉.
正如其他成员所解释的那样,"仍然可以访问"本身并不是错误,但它可能隐藏了一些错误的情况.在这种情况下,这不是一个问题,只是一个警告,可以隐藏一些令人讨厌的东西.
此警告也已报告给redhat
谷歌警告的原因,而不是ubuntu,因为谷歌已经在其服务器和ubuntu上部署了ipv6,然后没有执行捕获.您可以查看:
nslookup -q=AAAA www.google.com and nslookup -q=AAAA www.ubuntu.com
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2807 次 |
| 最近记录: |