linux 内存分配函数

来源:互联网 发布:电信光猫端口1和端口2 编辑:程序博客网 时间:2024/04/29 06:36
名字
    calloc,malloc,free,realloc -分配和释放动态内存
概要
    #include <stdlib.h>
    void *calloc(size_t nmemb, size_t size);
    void *malloc(size_t size);
    void free(void *ptr);
    void *realloc(void *ptr, size_t size);
描述
    callod()为一个大小为nmemb每个元素大小为size的数组分配内存并返回指向分配的内存的指针。该片内存被清零。如果nmemb或者size是0,calloc返回或者NULL或者一个唯一的指针值,该值能被成功的传递给free().
    malloc()分配size字节大小并返回一个指针指向分配的内存。内存没有清除,如果size是0,malloc或者返回NULL或者一个唯一的指针值,该值能被成功的传递给free().
    free()释放ptr指向的内存空间,该指针ptr必须是前面malloc,calloc,realloc调用返回的值。否则,如果前面调用过free,挥发生未定义的事情。如果ptr是空,没有任何操作被执行。
    realloc()改变ptr指向的内存块的大小到size字节。内容将保持不变;新分配的内存不会初始化。如果ptr是空,调用同于malloc(size),如果size是0,ptr不为空,调用同于free(ptr),除非ptr为空,它必须由更早的调用如malloc,calloc,realloc返回,如果指向的区域移动了,free(ptr)就执行了。
返回值
    malloc(),calloc()返回一个指针指向分配的内存,该内存按变量的类型对齐。错误的话,这些函数返回空。NULL也可能是malloc的成功调用返回的,size为0的时候。或者nmemb或size为0的对calloc的调用也返回NULL。
    free()不返回值。
    realloc()返回一个指针指向新分配的内存,内存按任何类型的变量对齐,也许和ptr不同,请求失败时返回NULL,如果size是0,NULL或一个合适的指针将传给free()。

原创粉丝点击