malloc – 申请动态内存
free – 释放动态内存
calloc – 申请并初始化一系列内存空间
realloc – 重新分配内存空间
下面举例
malloc和free
#include <stdio.h>
#include <stdlib.h>//因为用到了malloc和exit 和 free
int main()
{
int *ptr;
ptr = (int *)malloc(sizeof(int));//写不写(int *)都可以,因为malloc返回的类型是void *型
//malloc申请的是在动态内存空间是在堆上
if (ptr == NULL)
{
printf("分配内存失败!\n");
exit(1);//退出函数
}
printf("请输入一个整数:");
scanf("%d",ptr);
printf("你输入的整数是:%d\n", *ptr);
free(ptr);//释放malloc申请的动态内存空间
printf("你输入的整数是:%d\n", *ptr);
return 0;
}
我们输入520
输出
520
0
内存泄漏
两种情况:
1、隐式内存泄漏(没有及时free)
2、丢失内存块地址(就是申请了给到一个指针,然后该指针又被其他变量传参赋值,即使最后释放也是导致释放的并不是想要释放的内存地址)