int *ptr = malloc(sizeof(int));
size 所需記憶體區塊大小的byte數
回傳值是指向所指定的記憶體區塊的指標,失敗的話回傳NULL
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *ptr = malloc(sizeof(int));
printf("空間位置:%p\n", ptr);
printf("空間儲存值:%d\n", *ptr);
*ptr = 200;
printf("空間位置:%p\n", ptr);
printf("空間儲存值:%d\n", *ptr);
free(ptr);
return 0;
}
執行結果:
空間位置:0xb27010
執行結果:
空間位置:0xb27010
空間儲存值:0
空間位置:0xb27010
空間儲存值:200
如果使用了 malloc 分配動態記憶體,可是卻沒有使用 free 歸還記憶體,可能會發生記憶體用盡的情況。
陣列在使用的時候,必須事先決定好陣列的大小,有時候一開始不知道會使用多大的陣列,或是希望由使用者來自定大小,就可以使用動態記憶體配置,加上指標來實作。
int *arry = malloc(1000 * sizeof(int));
此行分配了 1000 個 int 大小的空間,並傳回空間的第一個位址配置後的空間資料是未知的。可以使用 calloc() 來宣告空間配置。
int *arry = calloc(1000, sizeof(int));
分配了 1000 個 int 大小的空間,並將空間裡的所有值初始化成 0。在使用 malloc 或是 calloc 進行記憶體配置,在不使用時,應該使用 free() 釋放記憶體。
參考:
https://openhome.cc/Gossip/CGossip/MallocFree.html
沒有留言:
張貼留言