2

重複の可能性:
配列名は C のポインターですか?
C++静的配列と動的配列?

私は C を学んでいますが、次の 2 つの配列の違いについて混乱しています。

int a[10];

int *b = (int *) malloc(10 * sizeof(int));

最も基本的なレベルで、これら 2 つの違いは何ですか?

4

3 に答える 3

6
int a[10];

スタックに割り当てられ、スコープが終了するとすぐに割り当てが解除されます。

int *b = (int *) malloc(10 * sizeof(int));

ヒープに割り当てられ、明示的に解放されない限り、プログラムの存続期間中存続します。

于 2012-09-22T14:55:49.953 に答える
1

静的配列は、現在のスタック フレームを離れるとすぐに破棄されます (基本的に、現在の関数が戻ったとき)。動的配列は、free() するまで永久に残ります。

于 2012-09-22T14:56:13.720 に答える
1

1 つ目はスタック上に存在し (= 変数のスコープが続く限り存在します)、2 つ目はヒープ上に存在します (= 解放されるまで存在します)。1 つ目は固定サイズですが、2 つ目はサイズを変更できます。

于 2012-09-22T14:56:46.730 に答える