解除分配/释放/释放功能

时间:2014-05-17 12:50:56

标签: function memory-management

是否可以解除分配功能?假设您有一个巨大的初始化函数,只能运行一次,是否可以在调用它之后解除分配,并使用额外的存储?我主要对C感兴趣,但如果该语言提供了有趣的行为,请随意发布任何其他语言。

我知道函数没有在堆上分配,因此你可能无法回收它们的内存,但这对我来说似乎是一种浪费。

4 个答案:

答案 0 :(得分:1)

使用语言功能无法这样做。

但是,根据您所使用的系统,操作系统可能会通过常规内存管理技术自行完成。 (但如果是这样的话,那就是“意外”。)

让我解释一下:程序被映射到内存并运行。未使用一段时间的代码将被抛出内存。数据被放入磁盘上的交换区域,以便以后能够“回收”它,但代码始终存在于可执行文件中,如果需要,可以从那里获取。

当然,这并不是在所有系统上都会发生,但Linux和AFAIK Windows也是如此。

答案 1 :(得分:1)

使用python,您可以在程序的生命周期中创建类和函数,也可以删除它们。由于实现语言之上有一些样板(cPython使用C),你会丢失内存,因此在这个应用程序中它不是一个特别有用的概念

答案 2 :(得分:0)

您可以使用共享库(例如dll)执行此操作。使用它们并卸载它们......

答案 3 :(得分:0)

您可以使用JavaScript在运行时定义函数并将它们分配给变量。稍后您可以删除该函数,或者在定义为局部变量时将其留给垃圾收集器。

var MyImplementation = {};
MyImplementation.test = function() {
console.log("hello");
};
MyImplementation.test();
delete MyImplementation.test;
MyImplementation.test();

这会产生:

  

你好

     

TypeError:undefined不是函数