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