我正在用C中的malloc進行實驗,我發現malloc在分配內存後會浪費一些空間。下面是我用來測試的mallocC中的malloc內存分配方案
#include <stdlib.h>
#include <string.h>
int main(){
char* a;
char* b;
a=malloc(2*sizeof(char));
b=malloc(2*sizeof(char));
memset(a,9,2);
memset(b,9,2);
return 0;
}
在下面的圖片的右側中間的(爲了清楚而以新標籤中打開圖像),你可以看到內存內容的代碼段; 0x804b008是地址指向通過變量'a'和0x804b018是變量'b'指向的內存。從0x804b00a 0x804b017到內存之間發生了什麼?事情是即使我試圖分配3*sizeof(char)
而不是2*sizeof(char)
字節的內存內存佈局是一樣的!那麼,有什麼我失蹤?
除了下面的答案,值得指出sizeof(char)= 1的定義,所以沒有一點乘以它。 –
@richardkettlewell這是正確的..但我已習慣於任何方式使用它的可讀性 – nagavamsikrishna