• 使用realloc函数需注意


    //若定义静态数组   int test[100];      则realloc无法为其分配内存空间,内存地址无法改变
    /*如果是静态数组是任何方式都不能实现动态增长,因为他的大小是编译时确定的。但是动态申请的内存区域就可以。如下
    int *test=(int*)malloc(10*sizeof(int));          */

    //测试代码如下

    #include <stdio.h>
    #include <malloc.h>
    int main()
    {
    int i;

    //int test[10];
    int *test=(int*)malloc(10*sizeof(int));  //起初分配10个空间
    for(i=0;i<10;i++)
     test[i]=i;           //存入10个数据

    for(i=0;i<20;i++)
    printf("%5d",test[i]);    //输出20个数据
    printf(" ");
    int *p;
    p=test;

    p=(int *)realloc(p,sizeof(int)*20);  //重新分配20个空间
    for(i=10;i<20;i++)
    test[i]=i+100;          //再存入10个数据,总共20个数据

    for(i=0;i<20;i++)
    {
    printf("%7d",test[i]);
    }


    return 0;
    }

    结果如下

    结果正常

     ——————————————————————————————————————————————————————————————————————————

    若用int test[10]静态数组定义,结果如下

    结果错误

  • 相关阅读:
    webuploader多次触发注册
    下载二进制文件
    表格打印
    多个请求下 loading 的展示与关闭
    前进刷新后退不刷新
    页面权限控制和登陆验证
    axios.post 配置formdata提交
    react错误边界
    关于beforeRouterEnter获取不到this
    JS
  • 原文地址:https://www.cnblogs.com/xiaofangfang/p/5592529.html
Copyright © 2020-2023  润新知