兩段 code 嘅分別在於 memory allocation 嘅時機。
int a[10];
呢段 code 係當個 program 行到呢句 code 時就會即刻 allocate 10 個 int space。
int *a;
a = (int *) malloc(sizeof(int) * 10);
呢段 code 係當個 program 行到第一句 code 嘅時候只係 allocate 咗一個 pointer variable 嘅 space。當行到 malloc 句 code嘅時候先至真係 allocate 10 個 int space。
如果講佔用嘅 memory space,上面段 code 只係佔用 10 bytes,而下面段 code 就會佔用 10 bytes + pointer variable。