使用 SUN RPC 释放内存

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

虽然你是对的,在你的应用程序结束时操作系统会自动回收内存,但这绝不是关于内存管理的 begin 'lazy' 的论据。如果您分配内存,请始终在应用程序稍后的某个位置释放它,即使这意味着它在退出时。

以上是关于使用 SUN RPC 释放内存的主要内容,如果未能解决你的问题,请参考以下文章

使用sun.misc.Cleaner或者PhantomReference实现堆外内存的自动释放

如何手动释放Linux内存的方法

linux何时自动释放内存

linux采用啥方法实现内存的分配和释放

sql 2008 R2 怎样 释放内存

怎么将电脑内存释放出来?