【问题标题】:Memory Free using SUN RPC使用 SUN RPC 释放内存
【发布时间】:2011-02-14 15:17:18
【问题描述】:

全部。当我使用 static char* result = malloc(1000*sizeof(char)); 在基于 ONC+ SUN RPC 的服务器程序的一个过程中。但是这个字符串是应该返回的。

如果它是静态的,我认为没有必要释放它。每次,字符串结果都会被分配相同的地址,不会引起内存冲突。

我说的对吗?或者我应该怎么做?这是返回值,怎么释放呢? 谢谢

【问题讨论】:

    标签: c memory-management rpc


    【解决方案1】:

    如果我理解您的问题,您在返回类型 char* 的函数调用中使用了初始化程序。在这种情况下,使用静态存储类是没有问题的。 result 将在程序的整个生命周期内保持其值(您分配的内存地址)。

    但是,在这种情况下不会多次调用 malloc。只有第一次通过你的函数。此外,内存仍然分配在堆上,因此您仍然需要在完成后释放它。但是,此释放将在程序的 exit() 上执行,因此可以忽略。

    【讨论】:

    • 虽然你是对的,在你的应用程序结束时操作系统会自动回收内存,但这绝不是关于内存管理的 begin 'lazy' 的论据。如果您分配内存,请始终在应用程序稍后的某个位置释放它,即使这意味着它在退出时。
    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多