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

© 手残程序员 中级黑马   /  2015-7-28 21:33  /  696 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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释放
/*

1 个回复

倒序浏览
萨比撒比撒比撒比
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马