动态分配内存原因
1、存储的数据需要延长生命周期
2、一个指针变量需要存储数据,变量本身只能存地址,不可存数据,需要分配内存空间来存储数据
c语言为内存的分配和管理提供了几个函数(导入库为<stdlib.h>)
- void malloc(int num,int size);
在内存中动态的分配num个长度为size的连续空间,并将每一个字节都初始化为0,所以它的结果是分配了numsize个字节长度的内存空间,并且每一个字节值都为0.- void free (void *address);
该函数释放address所指向的内存块,释放的是动态分配的内存空间。- void*malloc(int num);
在堆区分配一块指定大小的内存空间,用来存放数据,这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。- void *relloc(void *address,int newsize);
重新分配内存,把内存扩展到newsize。
内存分配
用指针变量接收数据,必须为指针变量分配一块指向的内存空间
char 8name;
用malloc(memory alloc)申请内存空间
name= (char *)malloc(10*sizeof(char));
使用realloc动态改变已经分配内存的大小
name = (char *)realloc(name,20*sizeof(char));
使用完必须自己动手释放内存
free(name);