内存管理
void *malloc(int num);
在堆区分配一块指定大小的内存空间,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。
void *calloc(int num, int size);
分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0
void free(void *address);
释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。
void *realloc(void *address, int newsize);
如果已经通过malloc函数或者calloc函数获得了动态空间,想改变其大小,可以用realloc函数重新分配
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char name[100];
char *description;
strcpy(name,"Tom"); //需要引入<string.h>
description = (char *)malloc(200*sizeof(char)); //动态分配内存
if(description==NULL)
{
printf("Error - unable to allocate required memory\n");
}
else
{
strcpy(description,"Tom is a boy");
printf("name=%s\n",name);
printf("description:%s\n",description);
free(description); //释放
}
return 0;
}