用malloc申请空间后忘记free怎么办(语言-c语言)

前几天在练习顺序表,用malloc申请空间,今天看了别人的视频才发现malloc与free要成对使用,所以我想问忘记free的话程序结束会自动释放吗,还是会内存泄漏啊

如果只是做测试使用,没有关系的,因为程序结束后,自动就free释放了;
但实际应用中,可能出现多次的申请内存,如果申请的内存使用完后,没有及时释放,有可能导致后续申请内存失败,也有可能因为内存泄漏出现莫名的错误。

程序结束肯定会释放的
内存泄漏的前提是程序没有退出的情况下,由于不断申请内存但不释放,导致内存不足。

进程结束,会自动free

  • 这篇文章:C语言——malloc与free 也许有你想要的答案,你可以看看
  • 同时,你还可以查看手册:c语言-malloc() 中的内容
  • 除此之外, 这篇博客: 【C】malloc/free中的 结构体数组 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • typedef struct Student
    {
        int ID;
        int SCORE;
        char SEX;
    }Student;
    
    void t2_struct()
    {
        // 栈 stack
        struct Student s1 = {1001, 78, 'G'};
        printf("ID = %d, Score = %d, Sex = %c\n", s1.ID, s1.SCORE, s1.SEX);
    
        // 堆 heap
        struct Student * s2 = (struct Student *)malloc(sizeof(struct Student));
        s2->ID = 1002;
        s2->SCORE = 99;
        s2->SEX = 'G';
        printf("ID = %d, Score = %d, Sex = %c\n", s2->ID, s2->SCORE, s2->SEX);
    
        // 释放内存
        if (s2 != NULL)
        {
            free(s2);
            s2 = NULL;
        }
    }
    
    void t3_struct_arr()
    {
        //栈区
        Student s_stack[3];
    
        // 堆区
        int num = 3;
        Student * ss = (Student *)malloc(sizeof(Student) * num);
        ss[0].ID = 1002;
        ss[0].SCORE = 99;
        ss[0].SEX = 'G';
        ss[1].ID = 1003;
        ss[1].SCORE = 89;
        ss[1].SEX = 'G';
        ss[2].ID = 1004;
        ss[2].SCORE = 99;
        ss[2].SEX = 'G';
        printf("ID = %d, Score = %d, Sex = %c\n", ss[0].ID, ss[0].SCORE, ss[0].SEX);
        printf("ID = %d, Score = %d, Sex = %c\n", ss[1].ID, ss[1].SCORE, ss[1].SEX);
        printf("ID = %d, Score = %d, Sex = %c\n", ss[2].ID, ss[2].SCORE, ss[2].SEX);
    
        // 释放内存
        if (ss != NULL)
        {
            free(ss);
            ss = NULL;
        }
    }