realloc函數


  原型:extern void *realloc(void *ptr, size_t newsize);
  用法:#include <stdlib.h>
  功能:改變ptr所指內存區域的大小為newsize長度。
  說明:如果重新分配成功則返回指向被分配內存的指針,否則返回空指針NULL。
        當內存不再使用時,應使用free()函數將內存塊釋放。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{

    char *p;
    p = (char *)malloc(100);
    if(p)
        printf("Memory Allocated at:%p\n", p);
    else
        printf("Not Enough Memory!\n");

    p = (char *)realloc(p, 256);

    if(p)
        printf("Memory Reallocated at:%p\n", p);
    else
        printf("Not Enough Memory!\n");


    free(p);

    return 0;
}

//==========================================================================
通常,realloc的用法會如下:
p = realloc(p, new_size);
if (p == NULL) {
        return;
}
如果realloc()失敗,ptr指向的這塊內存不會變化,不會free或者移動。也就是說,如果realloc()失敗了,照着上面代碼的寫法,這塊內存就被永遠遺忘了。
tmp = realloc(p, new_size);
if (tmp == NULL) {
        free(p);
        return;
}
p = tmp;




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM