malloc()库函数在内部调用brk()或sbrk()系统调用,它为数据区域分配内存,因此本地静态变量和全局变量将从堆中分配内存,增加数据区域的有效大小。现在我的问题是当我将内存分配给int * a?这是本地变量时究竟发生了什么。 我可能有误解,如果有的话请告诉我。谢谢
答案 0 :(得分:1)
int *p
本身是一个局部变量,它是一个指针(这些天:通常是四个或八个字节,通常在堆栈或寄存器中)。执行p = malloc(...)
时,您正在分配内存(在堆上 - 或者即使堆不是用于管理空闲内存的结构,这些日常常被称为'堆')并分配指向该内存的指针进入p
。
答案 1 :(得分:0)
当您调用malloc()
时,您可以访问所请求的内存量,或返回NULL。这是所有保证。其他一切都依赖于实现。您可以通过这种方式访问该内存。