zoukankan      html  css  js  c++  java
  • C语言中的realloc函数动态分配内存

    虽然现在说这个。。多半没有什么意思。。但我的确在很长的一段时间不知道他的工作原理。。

    所以随便记录下。。

    它的原型是:

    extern void * realloc(void * __ptr,size_t __size);

    第一个参数是为试图更改大小的原堆文件,size为新的内存大小。

    1.如果内存减少,则仅改变下索引信息,但并不代表被减少的部分内存还可以安全访问,这己经释放。

    2.如果扩大内存空间,则返回情况如下:

     (1),如果当前内存段后面拥有需要的内存空间,则直接扩展这段内存空间,返回原指针

       (2),如果当前内存段后面的空闲字节不够,那么就使用堆中第一个能够满足这一要求的内存块,

    将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存位置指针

      (3)如果申请失败,返回NULL,此时原来的指针仍有效。、、


    因此调用时会返回新的指针,应该判断,而原来指针会释放,不需要重新手动释放,因此下面的使用方式不好:

    ptr = realloc (ptr , new_size);


    摘抄自:linux高级程序设计

  • 相关阅读:
    Win8 iis 环境搭建
    Windows phone 8 触发器使用小结
    Windows Phone 页面之间参数传递方法
    日期SQL 脚本
    net 内存泄露和内存溢出
    Emacs的一些事情(与Vi的争议及使用)
    matlab与示波器连接及电脑连接
    msp430学习笔记-TA
    28个Unix/Linux的命令行神器
    linux在线中文手册
  • 原文地址:https://www.cnblogs.com/int32bit/p/3187787.html
Copyright © 2011-2022 走看看