zoukankan      html  css  js  c++  java
  • calloc、malloc、realloc函数的区别及用法

    /* 需要手动计算内存大小,未初始化 */
    int *p  = (int *)malloc(20 * sizeof(int));
    /* 不需要手动计算内存大小,初始化为0 */
    int *q  = (int *)calloc(20, sizeof(int));
    /* 动态内存 扩大/缩小
    * 1.成功分配: * 1.1 返回地址相同, 原内存后 有 空余内存,返回原来指针的地址; * 1.2 返回地址不同, 原内存后 没有 空余内存,新分配一块儿内存,并把原来的内存内容拷贝过来,原来的内存释放掉;
    * 2.失败返回NULL: * 2.1 原内存不释放, 重新分配的内存过大,分配失败,返回NULL,原内存不释放; * 2.1 原内存释放, 原指针不为NULL, 重新分配的大小为0,返回NULL,原内存释放,realloc(p, 0) === free(p);别这么用!
    * 3.扩容后的内存较原来的小,数据会丢失
    */

    int *pp = (int *)realloc(p, (20 + 10) * sizeof(int));
  • 相关阅读:
    (二)正反向代理
    (一)服务器架构详解
    斐波那契数列
    旋转数组的最小值
    23 入栈 出栈
    重建二叉树
    22 大端序和小端序
    反转单链表
    替换空格
    二维数组中的查找
  • 原文地址:https://www.cnblogs.com/frisk/p/12618533.html
Copyright © 2011-2022 走看看