C语言动态内存开辟的管理方式
:malloc/calloc/realloc
malloc/calloc/realloc开辟空间的相同点:
- 都是C语言的库函数,在使用时都必须包含相应的头文件
- 都是从堆上申请空间,使用完成时必须要通过free来进行释放,否则,内存泄漏
- 申请空间成功后,返回空间的首地址,申请失败返回NULL,因此在使用时必须判空
- 返回值类型为void*,在使用时要进行强制类型转化
void Test ()
{
//malloc
int* p1 = (int*) malloc(sizeof(int));
free(p1);
//calloc
int* p2 = (int*)calloc(4, sizeof (int));
// realloc
int* p3 = (int*)realloc(p2, sizeof(int)*10);
free(p3 );
}
malloc/calloc/realloc开辟空间的不同点:
malloc:
#include<stdlib.h>/#include<malloc.h>
void *malloc( size_t size );
malloc只是开空间,参数是要申请空间的字节大小
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>