你能在C++中释放函数吗?
最近有人告诉我函数不能被释放,但毕竟它们是占用一些内存的指令吗?就像构造函数和析构函数的工作方式一样。那么有没有办法释放函数呢?
回答
大量程序内存是“静态”分配的(可执行代码、全局变量、常量);即一劳永逸地映射并在加载时从系统中声明。它们在整个程序生命周期内保持分配状态,您无能为力。
大堆空间和堆栈空间也是预先分配的,但可以根据需要进行扩展。动态分配的变量和自动分配的变量确实在程序分配期间按需创建和删除,但这并不一定意味着“内存消耗”减少,因为堆和堆栈空间始终存在。
请注意,构造函数和析构函数不分配任何内存,它们只是执行初始化和取消初始化任务。分配/解除分配在函数进入/退出时、在堆栈上或在调用 new/delete 时在堆上执行。
事实上,事情更复杂,因为进程的内存空间是虚拟化的,即映射到物理可用的 RAM 和磁盘块,它们在所有正在运行的进程之间共享。