【问题标题】: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 来遍历列表?

【问题讨论】:

    标签: c pointers


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢 - 我想我明白了。所以换句话说,确保原始的 ifaddr 不会被修改并且内存(由 getifaddr 分配)将被释放。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2012-08-23
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多