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

时间:2011-04-27 18:18:57

标签: unix

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

2 个答案:

答案 0 :(得分:1)

int *p 本身是一个局部变量,它是一个指针(这些天:通常是四个或八个字节,通常在堆栈或寄存器中)。执行p = malloc(...)时,您正在分配内存(在堆上 - 或者即使堆不是用于管理空闲内存的结构,这些日常常被称为'堆')并分配指向该内存的指针进入p

答案 1 :(得分:0)

当您调用malloc()时,您可以访问所请求的内存量,或返回NULL。这是所有保证。其他一切都依赖于实现。您可以通过这种方式访问​​该内存。