在C中,是第一次调用或程序启动时加载到内存中的函数吗?它可以从内存中卸载吗?

get*_*nge 4 c memory function

例如:

如果我有一个名为的函数void Does_Stuff(int arg)并在main函数中调用它,那么只有在第一次调用它时,是否将Does_Stuff加载到内存中?或者是在程序初始化期间将其加载到内存中?

在main中调用Does_Stuff之后,我可以手动从内存中卸载它吗?

作为参考,我运行的操作系统是Windows 7,我正在使用MinGW进行编译.

Ben*_*tto 6

简单来说(通常依赖于各种平台事物的警告),正常的全局C函数的代码在加载程序时被"加载到内存中".你不能要求它"卸载".

也就是说,正如Hans在评论中提到的那样,较低级别的操作系统负责处理物理RAM中存在的重要内容,并且可能选择"分页"未经常使用的内存.这不是按功能进行的,并且不了解代码的结构.所以在这个意义上,函数的代码可能在不同的时间发生在实际的RAM中.但这是一个低于应用程序执行的级别,其中C函数始终"存在且可用".