重新分配初始化指针的原因是啥?
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 链表来显示。
在这种情况下,ifaddr
在for (struct ifaddrs *ifa = ifaddr; ....)
循环中被分配给一个新的ifa struct ifaddrs = ifaddr
。为什么要创建一个新变量,而不是使用之前已经初始化的ifaddr
来遍历列表?
【问题讨论】:
【参考方案1】:通过getifaddrs
填充的原始指针在不再使用时必须传递给freeifaddrs
。
通过在for
循环中使用单独的指针变量,我们保留了ifaddr
的原始值,因此可以将其传递给freeifaddrs
。
【讨论】:
谢谢 - 我想我明白了。所以换句话说,确保原始的ifaddr
不会被修改并且内存(由 getifaddr
分配)将被释放。以上是关于重新分配初始化指针的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章