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;

    }

  • 相关阅读:
    Spring(九)之事件处理
    Spring(八)之基于Java配置
    Spring(七)之基于注解配置
    Spring(六)之自动装配
    Spring(五)之Bean定义继承和依赖注入
    Spring(四)之Bean生命周期、BeanPost处理
    开源 视频会议 收藏
    摄像头拍照录相代码,没摄像头测试,
    什么是ICE (Internet Communications Engine)
    AForge.NET Framework-2.2.5
  • 原文地址:https://www.cnblogs.com/damonWq/p/5049439.html
Copyright © 2011-2022 走看看