如何使用malloc()分配内存?谁分配内存操作系统或编译器?一旦使用free()释放内存,它可以被其他进程使用吗?
答案 0 :(得分:2)
在操作系统中有4个内存区域堆,堆栈,文本和数据。使用malloc时,OS会从堆区域提供内存。编译器不负责分配这个内存。当您使用free时,内存块将返回堆中。
答案 1 :(得分:0)
通常,堆内存直接由运行时子分配器提供,无论操作系统提供什么。子分配器是特定于进程的,不需要内核调用。如果堆需要更多,则必须求助于系统调用以从操作系统获取另一个块。
特定于实现的是,子分配器是否会将块释放回操作系统。