A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 408205555 中级黑马   /  2015-7-23 18:18  /  398 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、内存管理的概念和内存分区
栈:局部变量
堆:程序运营过程中动态申请的空间
BSS段:没有初始化的全局变量和静态变量
数据段:字符串常量和已经初始化的全局变量和静态变量
代码段:程序运行的代码

二、常见的内存分配函数
C语言中提供了三个动态分配内存的函数:malloc,calloc,realloc
(1)malloc --> <stdlib.h>
格式:void * malloc(unsigend size);               
从内存的堆区分配大小为SIZE个字节的连续的内存空间
如果内存分配成功:返回新空间的首地址
如果内存分配失败:返回NULL
注意:malloc申请的内存空间,如果我们不赋值,是垃圾数

使用一个函数给malloc申请的空间进行初始化
meset(地址,’’,字节数);        //随便赋值就行
(2)calloc
格式:calloc(快数,长度); 分配多少块长度为多少的内存空间
//分配了4块,每块内存长度为4的内存空间
int *p=(int *)calloc(4,sizeof(int));
注意:calloc他可以自动初始化为0
(3)realloc
格式:int *p=realloc(地址,所需空间大小);
可以给已经存在的空间扩充大小。
如果原空间下面已被占用,会重新开辟一个符合所定义大小的空间,并把原来的空间已经存在的数据copy过来。
它会返回一个值,值是新开辟空间的地址。
三、野指针和内存泄露
//导入头文件<stdlib.h>
//使用free()函数释放内存空间
//free(要释放的空间的首地址)
free(p);
//free(p)以后,p是一个野指针
//赋值NULL把野指针锁起来
p=NULL;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马