alloc儲存分配

2021-07-23 20:19:22 字數 790 閱讀 7127

#define allocsize 10000

static char allocbuf[allocsize];

static char *allocp=allocbuf; //allocp是外部變數!指向陣列開頭

char *alloc(int n)

else

return 0;

alloc(n)函式返回乙個指向n個連續字元儲存單元的指標,alloc函式呼叫者可利用該指標儲存字串行

static char allocbuf[allocsize]; /* storage for alloc */ 

假定allocbuf的值是1000,allocsize是100

static char *allocp = allocbuf;  /* next free position */

allocp指向allocbuf的起始位址,也就是1000

第一次呼叫,n=10

char *alloc(int n)    /* return pointer to n characters */

else      /* not enough room */

return 0;

}第二次呼叫,n=50

char *alloc(int n)    /* return pointer to n characters */

else      /* not enough room */

return 0;

}第三次,n=60,1100-1060 = 40,不夠了

靜態儲存分配和動態儲存分配

通常定義變數或者物件,編譯器在編譯時都可以根據該變數或物件的型別知道所需記憶體空間的大小,從而系統在適當的時候為他們分配確定的儲存空間,這種記憶體分配被稱為靜態儲存分配。有些操作物件只有在程式執行時才能確定,這樣編譯器在編譯時就無法為他們預定儲存空間,只能在程式執行時,系統根據執行時的要求進行記憶體...

動態儲存分配

動態儲存分配 在我們使用記憶體時,堆是一塊很大的記憶體塊,用於執行時分配一些小的儲存空間。c 中動態儲存分配用 new和 delete 分配完記憶體需要判斷分配是否成功 分配了新的記憶體空間,舊資料塊的資料拷貝到新的空間中,舊的記憶體需要釋放以便其他部分需要新記憶體塊的時候可以使用,如果沒有釋放就會...

動態儲存分配

malloc函式 void malloc size t n 分配n個位元組的記憶體單元,分配成功,返回記憶體單元的首位址。分配失敗,返回null。calloc函式 void calloc size t nmemb,size t size 分配nmemb個 每個大小為size 的記憶體單元,記憶體單元...