zoukankan      html  css  js  c++  java
  • 1215.1——动态分配内存的补充realloc

    当再次在原来申请的内存基础上再加内存的时候用realloc,如果第一次分配的内存后面存储地方够用,则连着原来的申请,如果不够用,就重新找到一块够用的地方,然后把原来的复制过去

    int main(int argc, const char * argv[]) {

        char *name = NULL;

        int total = 0;

        while(1){

            char a = getchar();

            if (a == ' '){

                break;

            }

            if (name ==NULL) {

                name = (char*)malloc(1*sizeof(char));   //第一次进入的时候是用malloc分配空间

                if (name ==NULL) {

                    exit(EXIT_FAILURE);

                }

            }else{

                char * temp=NULL;

                temp = (char *)realloc(name, (total+1)*sizeof(char));   //再次进入的时候使用realloc分配空间

                if (temp ==NULL) {

                    free(name);   //如果第二次之后申请内存失败,要释放掉之前申请的内存,所以先用temp来申请,如果没申请成功,释放掉原来的name。

                    exit(EXIT_FAILURE);

                }

                name =temp;

            }       

            *(name +total) = a;  // 依次存放进去

            total++;

        }

        printf("%s ",name);

        free(name);

        return 0;

    }

  • 相关阅读:
    安装mysql
    工坊第十天
    工坊第九天
    友链qaq
    About me
    好耶
    [Ynoi2011]初始化
    [Ynoi2013]大学
    [Ynoi2015]盼君勿忘
    [Ynoi2019模拟赛]Yuno loves sqrt technology III
  • 原文地址:https://www.cnblogs.com/damonWq/p/5049439.html
Copyright © 2011-2022 走看看