gethostbyname()返回的hostent结构体的内存分配/释放

问题描述 投票:0回答:1

我最近在学习 C 语言的套接字编程,我遇到了 gethostbyname() 函数,它返回 struct hostent。它的两个字段是指向以 NULL 指针终止的指针数组的指针:

char** h_addr_list
char** h_aliases

我假设这是动态分配的内存,如果是这样,那么问题就出现了 - 该内存是如何释放的?文档中没有提到函数调用者释放它的要求。

另一方面,inet_ntoa返回在其主体内定义的静态存储的char数组,内存泄漏不是问题。

我感谢您帮助理解内存管理这类主题。

c memory-management
1个回答
0
投票

您会发现在旧函数中它没有分配,也没有释放,它存储在一个持久结构中,该结构在调用之间回收。

现代实现中每个线程至少有其中一个,但在按顺序进行多次调用时必须小心,因为您需要在进行另一次调用之前提取所需的任何数据,这将使之前的结果无效。

© www.soinside.com 2019 - 2024. All rights reserved.