我最近写了一个程序来帮助我理解 C++ 中内存指针的基础知识,我选择了一个简单的素数查找器。
我终于让它工作了。(是的调试!)
我让它运行看看它走了多远,它到达了 #815389,我的详细信息告诉我是第 65076 个素数,我遇到了应用程序崩溃。我能想到的一件事是我的整数溢出,所以我将它们改为长整数,它卡在同一个地方。
有人可以帮助解释是什么限制导致了这种情况吗?
comp:WinVista 64 位家庭高级版,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 跟踪我的所有帖子)