当您在unix系统上调用malloc()时会发生什么情况

malloc()库函数在内部调用brk()或sbrk()系统调用,它为数据区域分配内存,所以本地静态变量和全局变量将从堆中分配内存,增加数据区的有效大小。现在我的问题是当我将内存分配给int * a(这是局部变量)时究竟发生了什么。 我可能有误解,请告诉我,如果有的话


int *p本身是一个局部变量,它是一个指针(现在通常是四个或八个字节,通常在堆栈或寄存器中)。 当您执行p = malloc(...) ,您正在分配内存(在堆上 - 或者即使堆不是用于管理空闲内存的结构,通常称为“堆”的这些日子)​​,并分配一个指针到那个记忆到p


当你调用malloc()你可以访问请求的内存量,或者返回NULL。 这就是保证。 其他一切都依赖于实现。 您访问该内存的机制可能非常多样化。

链接地址: http://www.djcxy.com/p/86511.html

上一篇: what happens when you invoke malloc() on a unix system

下一篇: how to get Heap size of a program