私は最近、C++ でのメモリ ポインターの基本を理解するのに役立つプログラムを作成しました。単純な素数ファインダーを選びました。
私はついにそれを働かせました。(デバッグにどうぞ!)
そして、それがどこまで進むかを確認するために実行させました.65076番目の素数であることが詳細に表示され、#815389の素数に達し、アプリがクラッシュしました. 私が考えることができたのは、intがオーバーフローしていたので、それらをlongに変更したことです。同じ場所でスタックします。
誰かがこれを引き起こしている制限を説明するのを助けることができますか?
comp: WinVista 64 ビット Home Premium、6GB RAM AMD 4800+ X2 プログラムが 4,664K のメモリ使用量でクラッシュする
ソース:
#include <cstdlib>
#include <iostream>
\\\\(Backslashes added for readability)
using namespace std;
long number;
long numnum;
class num;
class num {
public:
long i;
void check();
bool nxt;
num* nxtnum;
};
void num::check() {
if (number % i != 0) {
if (nxt == true) {
(*nxtnum).check();
} else {
nxtnum = new num();
(*nxtnum).i = number;
numnum++;
cout << numnum << ":" << number << ", ";
nxt = true;
};
};
};
int main(long argc, char *argv[]){
numnum = 1;
cout << numnum << ":" << 2 << ", ";
num two;
two.i = 2;
for (number = 3; 1<=1000001; number++) {
two.check();
};
cout << endl;
system("PAUSE");
return EXIT_SUCCESS;
};
(ユーザー名は気にしないでください。これは私が使用する単なるエイリアスであるため、Google ですべての投稿を追跡できます)