相關函數 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()不會有任何作用。