美文网首页
C语言实战开发篇-8 动态分配内存

C语言实战开发篇-8 动态分配内存

作者: MRJMORIARTY | 来源:发表于2019-12-18 19:42 被阅读0次

    为什么使用动态分配内存

    如果使用指针变量接收数据,必须先为这个指针变量分配一片指向的内存空间
    有内存空间才能存数据

        name=(char*)malloc(10*sizeof(char));
        if(name==NULL){
            free(name); 
            exit(EXIT_FAILURE);
        } 
        scanf("%s",name);
        printf("%s\n",name);
        realloc(name,20*sizeof(char))//使用realloc动态改变已经分配的大小
        //增加或减少 ,必须释放之前的内存 
        free (name);//使用完毕手动释放内存
    

    常量字符串的内存空间有系统自动分配
    在常量区里面分配当程序结束才会被释放
    常量区-常量const int a=1
    静态区 static
    栈 局部变量 int a =10;离开作用域就自动收回
    堆 自己申请的内存 malloc calloc realloc,必须自己释放
    为什么要动态分配内存:
    1.存储的数据,需要延长生命周期
    2.一个指针变量需要存储数据,变量本身只能存地址,不能存数据,需要分配内存空间来存储数据
    例,用数组存储名字,且不浪费空间

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
        char*name;
        /*
        如果使用指针变量接收数据,必须先为这个指针变量分配一片指向的内存空间
        有内存空间才能存数据 
        */ 
        name=(char*)malloc(10*sizeof(char));
        while(1){
        scanf("%s",name);
        printf("%s\n",name);
        if(name==NULL){
            free(name); 
        //  exit(EXIT_FAILURE);
        } 
        realloc(name,20*sizeof(char));
        //使用realloc动态改变已经分配的大小
        //增加或减少 ,必须释放之前的内存 
        free(name);
        //使用完毕手动释放内存 
        } 
        
    return 0;
    }
    

    相关文章

      网友评论

          本文标题:C语言实战开发篇-8 动态分配内存

          本文链接:https://www.haomeiwen.com/subject/joaunctx.html