zoukankan      html  css  js  c++  java
  • malloc、calloc、realloc函数说明

    malloc 函数

    #include <stdlib.h>
    void* malloc(int n);
    
    • n为要分配的字节数,如果成功,返回获得空间的首地址,如果分配失败,则返回NULL,malloc分配的内存是未初始化过的,所以必须用memset初始化
    #include <string.h>
    void *memset(void *s, int ch, size_t n);
    
    • 在s指向的的地址,填充n个ch
    • malloc分配的是堆上的内存,显式调用free来释放
    #include <stdlib.h>
    void free(void *p);
    

    calloc 函数

    calloc函数和malloc类似,都是从堆上分配内存,函数声明如下

    #include <stdlib.h>
    void *calloc(int n,int size);
    
    • 如果执行成功,获得大小为n的空间,并返回空间的首地址,如果失败,函数返回NULL。
    • 和malloc不同的是,calloc分配的都是经过初始化的,内容为0。
    • calloc函数适合为数组申请空间,n为数组个数,size设置为数组大小。
    • 使用free释放空间

    realloc 函数

    realloc函数可以实现内存分配和内存释放的功能,函数声明如下:

    #include <stdlib.h>
    void* realloc(void * p,int n);
    
    • p必须为指向堆内存空间的指针,即由malloc函数、calloc函数或realloc函数分配空间的指针。realloc函数将指针p指向的内存块的大小改变为n字节。
    • 如果n小于或等于p之前指向的空间大小,保持原有状态不变。如果n大于原来p之前指向的空间大小,则系统将重新为p从堆上分配一块大小为n的内存空间,同时,将原来指向空间的内容依次复制到新的内存空间上,p之前指向的空间被释放。
    • realloc函数分配的空间也是未初始化的。
    • realloc分配的空间,须有free释放
  • 相关阅读:
    gson Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path
    angularjs-$interval使用
    angularjs的页面拆分思想
    桌面工具的分享
    怎么理解高内聚低耦合
    sqlserver 还原数据库
    Sqlserver 读取EXCEL
    Search everything 使用说明
    根据文件大小搜索电脑文件
    一个不错的录屏的软件的分享
  • 原文地址:https://www.cnblogs.com/shenlinken/p/9410962.html
Copyright © 2011-2022 走看看