int main()
{
struct addrinfo* c; //创建套接字结构
char host[1024],serv[1024];
getaddrinfo("163.com","http",NULL,&c); //取得猪厂 ip 地址及 http 端口号
int flags = NI_NUMERICSERV; //令服务显示为端口号
getnameinfo(c->ai_addr,c->ai_addrlen,host,1024,serv,1024,flags);
printf("host:%s,serv:%s\n",host,serv); //打印 ip 及端口号
freeaddrinfo(c); //事件起点,释放套接字结构 c
if(!c)
printf("c is gone\n");//如果 c 被释放了,打印“c is gone”
else
printf("c is there\n"); //如果 c 没有被释放,打印“c is there”
}
运行结果: bash-3.2$ ./a.out host:123.58.180.8,serv:80 c is there
为什么这个结构 c 明明被我 freeaddrinfo 了,还是依然阴魂不散呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.