初创建于: 2022-02-09 00:30
C语言的动态分配内存是十分重要的
主要有四个函数:
void *malloc(int num)
void *calloc(int num, int size)
void *realloc(void *address, int newsize)
void free(void *address)
malloc
void *malloc(int num)
在堆区分配一块指定大小的内存空间, 这块内存空间在函数执行完成后不会被初始化, 他们的值是未知的.
calloc
void *calloc(int num, int size)
在内存中动态地分配 num 个长度为 size 的连续空间, 并将每一个字节都初始化为 0. 所以它的结果是分配了 num*size 个字节长度的内存空间, 并且每个字节的值都是0.
name = (char *)calloc(200, sizeof(char));
realloc
void ralloc(void *address, int newsize)
该函数重新分配内存,把内存扩展到 newsize。
name = (char *)realloc(name, 100 * sizeof(char));
关于realloc
函数, 需要注意原空间与新新申请的空间的关系.
char* str1 = (char*) calloc(10, sizeof(char));
char* str2 = (char*) realloc(str1, 20 * sizeof(char));
在以上程序中, str2
是在str1
的基础上扩充的, 因此str1~=str2
,
但是在释放str1
的空间后, str2
也会失效.
free
void free(void *address)
该函数释放 address 所指向的内存块,释放的是动态分配的内存空间。
所有使用 malloc 与 calloc 申请的内存空间都应该被释放, 否则会造成内存泄露, 十分严重.
标签:int,realloc,void,C语言,char,num,分配内存,calloc,动态 From: https://www.cnblogs.com/Corona09/p/17038861.html