黑马程序员技术交流社区
标题: 动态内存管理 [打印本页]
作者: 手残程序员 时间: 2015-7-28 21:33
标题: 动态内存管理
1) malloc
(void *)malloc(unsigned size) //动态的向内存申请连续的n个字节 返回的是新申请的内存空间的首地址
int *p = (int *)malloc(100); //p是在栈区 malloc(100) 在堆区
malloc不会把新申请的空间初始化
注意:判断一个空间是否申请成功
if(p!=NULL){
//执行语句
}else{
//分配不成功
} //只有申请成功了,才能操作
memset(p,'0',100); //全部初始化为0
2) calloc
int *p = (int *)calloc(5,4); //申请5个长度为4的空间
calloc可以把新申请的空间初始化0
注意:判断一个空间是否申请成功
if(p!=NULL){ //只有申请成功了,才能操作
}else{
//分配不成功
}
3) realloc
重新改变一块内存空间的大小 p = (int *)realloc(p,size);
4) free
释放我们指定的内存空间
free(p); //p是我们新申请的内存单元 free后,p是一个野指针
如果不释放,造成内存的泄露
推理过程 只需要记住 我们使用了malloc或者calloc记的要free释放
/*
作者: 你好再见 时间: 2015-7-28 22:19
萨比撒比撒比撒比
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |