进程在内存中的分配主要有5个部分,代码段,data段,.bss段,heap段,stack段
在linux系统中,程序在内存中的分布如下所示:
低地址 | .text | .data | .bss | heap(堆) --> | unused | <-- stack(栈) | env | 高地址 |
在c程序中alloc函数从栈空间获取内存,返回是自动释放;
malloc函数是从堆空间获取内存;
calloc函数和malloc基本一致,不同的是calloc函数会将申请到的内存初始化为0;
relloc函数是重新分配内存,可以改变申请到的内存的大小。