📅  最后修改于: 2023-12-03 14:44:08.161000             🧑  作者: Mango
在C语言中,动态内存分配一般使用malloc()
函数。malloc()
函数可以在运行时动态地为变量分配内存空间。因为在编译时我们常常无法确定要分配多少空间,所以动态内存分配成为一种非常常用的技术。
malloc()
函数定义在头文件stdlib.h中,其函数原型如下:
void *malloc(size_t size);
下面是malloc()
函数的一般使用方法:
#include <stdlib.h>
int main()
{
int *p;
p = (int*)malloc(sizeof(int));
if(p == NULL)
{
printf("No memory available!");
exit(-1); //异常退出
}
*p = 5;
printf("%d", *p);
free(p);
return 0;
}
上面的代码先声明了一个指向int型的指针p,用malloc()
函数分配了一块大小为int型变量的空间。如果空间分配失败,则输出一条出错信息并退出程序。如果分配成功,则将该指针指向该内存空间,向其中存储一个整数5,并打印该整数。最后需要用free()
函数释放所分配的空间。
malloc()
函数时,变量的内存空间可以动态地分配,但必须手动释放。void *malloc(size_t size);
void free(void *ptr);
malloc()
分配空间时,需要注意以下几点:malloc()
分配的空间不会自动初始化为0,因此在使用前需要手动给其赋一个初值。malloc()
分配的空间在使用前应该判断其指针是否为NULL。malloc()
分配的空间大小不能改变,有需要时可以使用realloc()
函数重新分配空间。free()
函数释放空间时,需要注意以下几点: