是否有可能释放一个函数?假设您有一个只运行一次的庞大初始化函数,那么在调用它之后是否可以释放它,并使用这个额外的存储空间?我主要对C感兴趣,但如果任何其他语言都有有趣的行为,可以随意发布。
我知道没有在堆中分配函数,因此您可能无法回收它们的内存,但这对我来说确实是一种浪费。
发布于 2014-05-17 12:57:53
使用这些语言特性是不可能的。
但是,根据您所使用的系统,操作系统可以通过正常的内存管理技术来单独完成这些操作。(如果是这样的话,那是“偶然”的。)
让我解释一下:程序被映射到内存中并运行。有一段时间没有使用的代码将被抛出内存。数据被放入磁盘上的交换区域,以便以后能够“回收”它,但是代码总是出现在可执行文件中,如果需要的话,可以从其中获取代码。
当然,并不是所有的系统都会出现这种情况,但是Linux和也是这样工作的。
发布于 2014-05-17 15:45:54
使用python,您可以在程序的生命周期内创建类和函数,并删除它们。但是,由于在实现语言(cPython使用C)上有一些样板,所以在这个应用程序中它不是一个特别有用的概念,所以您会丢失内存。
发布于 2014-05-18 08:45:40
您可以使用共享库(例如dll)来实现这一点。用它们卸下它们..。
https://stackoverflow.com/questions/23711561
复制相似问题