目录
一.malloc函数
二.其他注意事项
三.视频教程
在定义变量的时候会在内存中申请空间。除了在定义变量的时候申请内存空间,也可以使用库函数动态申请内存,
一.malloc函数
作用:动态申请一块连续的任意尺寸的内存空间。
函数原型:void *malloc(size_t size);
头文件:#include <stdlib.h>
为什么返回值void *,可以他可以被转换成任意类型的指针。
函数返回值:成功返回指向申请完的内存空间的指针,失败返回NULL。
举例:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int *p;
    p = (int *)malloc(sizeof(int));
    if(p == NULL){
        printf("malloc error\n");
        return -1;
    }
    printf("Please enter an int type of data\n");
    scanf("%d",p);
    printf("data is %d\n",*p);
    free(p);
    return 0;
}运行结果:

需要注意的是,malloc函数必须和free函数成对出现。
函数原型:
void free(void *ptr);
作用:释放ptr指向的内存空间。这个空间必须由malloc,calloc,realloc函数申请。realloc和calloc也是动态申请内存的函数,这里不做介绍。
也就是说必须使用free函数释放内存,否则会发生内存泄漏。
发生内存泄漏的例子:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int *p;
    while (1)
    {
        p = (int *)malloc(sizeof(int));
        if(p == NULL){
            printf("malloc error\n");
            return -1;
        }
    }
    
    return 0;
}如果运行,等内存全部使用完毕,系统会自动kill掉该程序。甚至在运行过程中,一些性能不好的电脑会卡住。运行结果:

二.其他注意事项
1.也可以这样使用申请任意大小的空间:(指针类型*)malloc(sizeof(指针类型)*数据数量)
三.视频教程
79.动态申请内存_哔哩哔哩_bilibili












![[Linux] 权限](https://i-blog.csdnimg.cn/direct/edbba5bbe0bd4fc59885614068aa03af.png)






