2

「new」の使用はどのように動的と見なされますか? ヒープに配置され、ポインターを返し、固執することは理解していますが、割り当てに関して「動的」な性質であることをまだ認識していません。

以下の状況では、静的メソッドであっても実行時に両方の配列が割り当てられます。だから違いがわからない。そして、両方とも、割り当てを動的に拡大/縮小できるとは思いませんよね?

int size = 0;
std::cout << "enter size: ";
std::cin >> size;

int* array_d = new int[size];   // "dynamic" allocation
int array_s[size];              // static allocation correct?
4

4 に答える 4

1
int array_s[size]; 

これは有効な c++ ではありません。少なくとも c++03/11 では有効ではありません。配列は、通常はコンパイル時に割り当てられるスタック上のスペースを予約することによって割り当てられる固定サイズを持つ必要があります。

最初のものは実行時にさまざまな量のメモリを割り当てることができるため動的です.2番目のものはc ++ではまったく有効ではありません.固定量のみが有効であるため、動的とは見なされません.

于 2013-07-09T08:37:05.683 に答える
0

最初の配列のサイズは実行時に変更される可能性があるため、「動的」です。2 番目の配列のサイズはコンパイル時にわかっている必要があるため、「静的」です。

于 2013-07-09T08:36:44.377 に答える