重新分配初始化指针的原因是啥?

Posted

技术标签:

【中文标题】重新分配初始化指针的原因是啥?【英文标题】:What is the reason for reassigning the initialized pointer?重新分配初始化指针的原因是什么? 【发布时间】:2022-01-21 17:10:29 【问题描述】:

我目前正在学习 c posix 套接字。在提供的示例https://www.man7.org/linux/man-pages/man3/getifaddrs.3.html 中,struct ifaddrs *ifaddr 使用 'getifaddrs(&ifaddr)' 函数填充了所有 IP/接口/网络信息。然后所有信息都应该通过遍历 ifaddr 链表来显示。

在这种情况下,ifaddrfor (struct ifaddrs *ifa = ifaddr; ....) 循环中被分配给一个新的ifa struct ifaddrs = ifaddr。为什么要创建一个新变量,而不是使用之前已经初始化的ifaddr 来遍历列表?

【问题讨论】:

【参考方案1】:

通过getifaddrs 填充的原始指针在不再使用时必须传递给freeifaddrs

通过在for 循环中使用单独的指针变量,我们保留了ifaddr 的原始值,因此可以将其传递给freeifaddrs

【讨论】:

谢谢 - 我想我明白了。所以换句话说,确保原始的 ifaddr 不会被修改并且内存(由 getifaddr 分配)将被释放。

以上是关于重新分配初始化指针的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java assertionerror是啥异常

linux上的core文件,麻烦牛人们帮忙解释下是啥原因

d 对象的动态建立和释放

在c中初始化双指针的正确方法是啥

[Js-c++]c++中的指针引用和数组名

C++ “**.exe已停止工作”是啥原因?