全局变量:分配到 内存的静态区。 局部变量(非静态):分配到 内存的动态区。在存储区中称为栈(stack) 临时数据(C允许内存动态分配区域):存放在自由空间区,称为堆区(heap) 内存动态分配 得益于四个库函数实现 (malloc calloc free realloc) 调用库函数 <stdlib.h> void * 不指向任何数据,只提供地址。如未成功执行(内存空间不足),则返回空指针 1 malloc函数 // 动态存储区 void *malloc(unsigned int size) 作用:内存的动态区域 分配长度为size 的连续空间。 返回值 是分配区域的第一个字节地址,分配区域的开头为止。 maclloc(100)//分配100字节的临时分配域,函数值为第一个字节地址。 ps:貌似 是给 局部变量/临时数据 分配内存空间的????? 2 calloc函数 // 动态存储区 void *calloc(unsigned n,unsigned size) 作用:内存动态存储区中分配长度为size的连续空间,这个空间比较大,足够存个数组。 p = calloc(50,4)//开辟50*4个自己的临时分配域,把起始地址赋给指针变量p ps:貌似 是给 局部变量/临时数据 分配内存空间 但是比较大额的????? 3 free函数 void free(void *p) 作用:释放指针变量p所指向的动态空间,使者部分空间能够重用,注意是空间,没说“指针“ free(p) //释放指针变量p 所指向的已分配的动态空间 ps:释放指针变量的方法。 4 realloc函数 void *relloc(void *p,unsigned int size) 如果通过mollie函数或是calloc 获取动态空间 想改变其大小,可以用recalloc函数重新分配。 realloc(p,50) //重置指针变量p的动态存储空间为50字节。 ps:重置已经分配的指针变量的空间。 小结:四个库函数 1/2 在动态存储区内 给变量分配存储空间(大小区别) 3 释放指针变量的存储空间 4 重置 指针变量的存储空间