-2
 #include <iostream>

 using namespace std;

 int main()
  {int primes[521153];

  return 0;
 }

これは、521153 より小さい数値に対して機能します。この方法では機能せず、非常に大きな負の数値が返されます。

4

1 に答える 1

2

スタック サイズを超えました。C言語は「移植可能なアセンブラー」のように機能し、すべての言語操作が「未定義の動作」を引き起こす場合でも、機械操作に直接マップされます。この場合、スタックがヒープと衝突し、プログラムは自身の頭脳を上書きして停止します。

int *primes = new int[BIG_NUMBER];十分なメモリを割り当てることができない場合に例外を発生させるように明確に定義されている IIRC を使用します。そして、ヒープ (newストレージを取得する場所) は (最新のアーキテクチャでは) 任意に拡大できますが、スタックはできません。C++ チュートリアルでは、これらすべての用語を定義します。

于 2013-10-16T01:23:49.243 に答える