c-释放指针



这只是一个一般性的问题,但例如在windows上,如果我创建了一个指向hostent结构的指针来与gethostbyname()一起使用,我是否必须释放该指针的内存,或者它是由我自己处理的。我认为,由于我没有对它专门调用malloc,所以这不是我的工作。有人能帮我澄清一下吗?

感谢

根据msdn

gethostbyaddr和返回的主机结构的内存gethostbyname函数由Winsock DLL内部分配来自线程本地存储。只有一个宿舍结构分配和使用,无论gethostbyaddr或gethostbyname函数是在线程上调用的。返回的女招待如果有其他调用,则必须将结构复制到应用程序缓冲区的gethostbyaddr或gethostbyname函数相同的线程。否则,返回值将被在同一线程上的后续gethostbyaddr或gethostbyname调用。为返回的主控结构分配的内部内存为当线程退出时由Winsock DLL释放。

因此,您唯一需要释放它的时间是,如果您正在将其内容复制到分配给的内存中

gethostbyname的情况下,您不必担心释放存储空间。

通常,返回指针的函数应该记录调用者对指针的责任。您可能需要释放它,将它传递给另一个函数,或者在这种情况下不必执行任何操作。

使用strdup作为反例,您应该调用free

相关内容

  • 没有找到相关文章

最新更新