• 动态分配内存补充 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;

    }

  • 相关阅读:
    word2vec层次化softmax理解
    python动态加载模块,并获取模块中的类与方法(类似反射)
    用Python装饰器给函数自动加上try except
    3D打印第二弹:狗牌
    【高等代数】06
    【高等代数】05
    沙箱-guacamole
    关于写博客的一点思考
    二阶段目标检测总结
    Waymo object detect 2D解决方案论文拓展
  • 原文地址:https://www.cnblogs.com/huoran1120/p/5047376.html
Copyright © 2020-2023  润新知