當前位置:編程學習大全網 - 源碼下載 - C語言中的動態內存分配malloc calloc realloc free 等得具體格式是怎樣的?

C語言中的動態內存分配malloc calloc realloc free 等得具體格式是怎樣的?

malloc(配置內存空間)

相關函數 calloc,free,realloc,brk

表頭文件 #include<stdlib.h>

定義函數 void * malloc(size_t size);

函數說明 malloc()用來配置內存空間,其大小由指定的size決定。

返回值 若配置成功則返回壹指針,失敗則返回NULL。

範例 void p = malloc(1024); /*配置1k的內存*/

calloc(配置內存空間)

相關函數 malloc,free,realloc,brk

表頭文件 #include <stdlib.h>

定義函數 void *calloc(size_t nmemb,size_t size);

函數說明 calloc()用來配置nmemb個相鄰的內存單位,每壹單位的大小為size,並返回指向第壹個元素的指針。這和使用下列的方式效果相同:malloc(nmemb*size);不過,在利用calloc()配置內存時會將內存內容初始化為0。

返回值 若配置成功則返回壹指針,失敗則返回NULL。

範例 /* 動態配置10個struct test 空間*/

#include<stdlib.h>

struct test

{

int a[10];

char b[20];

}

main()

{

struct test *ptr=calloc(sizeof(struct test),10);

}

 

free(釋放原先配置的內存)

相關函數 malloc,calloc,realloc,brk

extern void *realloc(void *mem_address, unsigned int newsize);

語法:指針名=(數據類型*)realloc(要改變內存大小的指針名,新的大小)。//新的大小壹定要大於原來的大小不然的話會導致數據丟失!

頭文件:#include <stdlib.h> 有些編譯器需要#include <alloc.h>,在TC2.0中可以使用alloc.h頭文件

功能:先按照newsize指定的大小分配空間,將原有數據從頭到尾拷貝到新分配的內存區域,而後釋放原來mem_address所指內存區域,同時返回新分配的內存區域的首地址。即重新分配存儲器塊的地址。

返回值:如果重新分配成功則返回指向被分配內存的指針,否則返回空指針NULL。 

註意:這裏原始內存中的數據還是保持不變的。當內存不再使用時,應使用free()函數將內存塊釋放。

表頭文件 #include<stdlib.h>

定義函數 void free(void *ptr);

函數說明 參數ptr為指向先前由malloc()、calloc()或realloc()所返回的內存指針。調用free()後ptr所指的內存空間便會被收回。假若參數ptr所指的內存空間已被收回或是未知的內存地址,則調用free()可能會有無法預期的情況發生。若參數ptr為NULL,則free()不會有任何作用。

  • 上一篇:要玩就玩真傳奇!娛美德正版手遊《傳奇M》《傳奇W》,帶妳感受戰鬥魅力
  • 下一篇:分布式事務解決方案TCC
  • copyright 2024編程學習大全網