使用malloc()进行动态内存分配

时间:2014-11-04 22:56:50

标签: c memory-management operating-system

如何使用malloc()分配内存?谁分配内存操作系统或编译器?一旦使用free()释放内存,它可以被其他进程使用吗?

2 个答案:

答案 0 :(得分:2)

在操作系统中有4个内存区域堆,堆栈,文本和数据。使用malloc时,OS会从堆区域提供内存。编译器不负责分配这个内存。当您使用free时,内存块将返回堆中。

答案 1 :(得分:0)

通常,堆内存直接由运行时子分配器提供,无论操作系统提供什么。子分配器是特定于进程的,不需要内核调用。如果堆需要更多,则必须求助于系统调用以从操作系统获取另一个块。

特定于实现的是,子分配器是否会将块释放回操作系统。