c - `gethostbyname`如何在不要求调用者释放资源的情况下返回 `struct hostent *`?

标签 c network-programming

struct hostent *gethostbyname(const char *name)

请注意,hostent.h_addr_list 是一个具有可变长度的字段。

gethostbyname 函数如何实现返回一个指向结构体的指针而不要求调用者释放资源?

R. Stevens 着名的 Unix Network Programming Vol 1 中使用的所有示例都不包含释放那些返回指针的代码,我认为这些不是无知。 MSDN 中的一个示例也做同样的事情 example of usage

最佳答案

您链接到的 man 页面包含答案:

When non-NULL, the return value may point at static data, see the notes below.

稍后:

The functions gethostbyname() and gethostbyaddr() may return pointers to static data, which may be overwritten by later calls.

关于c - `gethostbyname`如何在不要求调用者释放资源的情况下返回 `struct hostent *`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11544411/

相关文章:

c - 正确使用 memset 和动态分配的多维数组

C - 将小文件保存为字符串

c - 为什么我的程序会因堆栈溢出而崩溃?

c++ - getnameinfo 内存泄漏是否得到确认?

一次在udp服务器上创建两个套接字,如何bind()?

linux - 源 IP 地址过滤应该在应用层本身实现还是由应用层委托(delegate)给防火墙

c - 为什么我不能乘以 float ?

c - 如何让 getaddrinfo 只返回一个结果?

linux - 如何测试 TCP 写入超时的处理?

c - 数组的长度比需要的长