BaysideLizard 发表于 2023-11-20 15:46:51

S1E37:动态内存管理(上)--笔记

#include <stdio.h>
#include <stdlib.h>
//鱼C论坛——BaysideLizard写于2023年11月20日

/*更灵活的内存管理方式
·malloc
--申请动态内存空间
·free
--释放动态内存空间
·calloc
--申请并初始化一系列内存空间
·realloc
--重新分配内存空间
*/
int main()
{
    int *ptr;

    ptr = (int *)malloc(sizeof(int));
    if(ptr == NULL)
    {
      printf("分配内存失败!\n");
      exit(1);
    }

    printf("请输入一个整数:");
    scanf("%d",ptr);

    printf("您输入的整数是%d\n",*ptr);
    free(ptr);//不会修改ptr的值
    printf("您输入的整数是%d\n",*ptr);//非法空间

    return 0;
}

/*导致内存泄露的两种情况:
--隐式内存泄漏(用完内存块没有及时使用free函数释放)
--丢失内存块地址*/









运行结果:
请输入一个整数:1
您输入的整数是1
您输入的整数是11497008

Process returned 0 (0x0)   execution time : 0.540 s
Press any key to continue.









在FishC学C的第十九天

z03170010 发表于 2023-11-25 19:47:33

&#128077;
页: [1]
查看完整版本: S1E37:动态内存管理(上)--笔记