zoukankan      html  css  js  c++  java
  • 使用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]静态数组定义,结果如下

    结果错误

  • 相关阅读:
    我的2012
    java抽象工厂模式
    java工厂方法模式
    javascript闭包
    字符串转换成枚举类型
    按位与 按位或 按位异域
    一个查找替换文件的简单工具
    c#写的.net 画流程图的控件
    .net 面试题之 Sql 分页 存储过程
    .net 面试整理2013年3月21
  • 原文地址:https://www.cnblogs.com/xiaofangfang/p/5592529.html
Copyright © 2011-2022 走看看