内存:
每个程序的内存是分区的:堆区、栈区、静态区、代码区。
1.代码区:放置所有的可执行代码,包括main函数。
2.静态区:存放所有的全局变量和静态变量。
3.栈区:栈(stack),先进后出。存储所有的自动变量、函数形参。
4.堆区:堆(heap)和栈一样,程序运行过程中可以随时修改的内存区域。
动态(堆)内存管理:
C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。
void *calloc(int num, int size);/*分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0 */ void free(void *address); /*释放 address 所指向的内存块*/ void *malloc(int num); /*区分配一块指定大小的内存空间,用来存放数据*/ void *realloc(void *address, int newsize); /*重新分配内存,把内存扩展到 newsize*/
内存动态分配、调整与释放:
char *p = (char *)malloc(sizeof(char) * 30);//在堆中申请了30个char大小内存 p = realloc( p, sizeof(char) * 100);//调整p为100个char大小的内存 free(p);//释放申请的堆内存,p不可改变