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、丢失内存块地址(就是申请了给到一个指针,然后该指针又被其他变量传参赋值,即使最后释放也是导致释放的并不是想要释放的内存地址)