Я недавно написал программу, которая поможет мне понять основы указателей памяти в C ++, я выбрал простой искатель простых чисел.
Я наконец получил его на работу. (ура за отладку!)
И я позволил ему бегать, чтобы посмотреть, как далеко он заходит, он добирается до пика. # 815389 с моим подробным сообщением, что это 65076-е простое число, я получаю сбой приложения. Единственное, о чем я мог думать, - это переполнение моих входных данных, поэтому я изменил их на длинные, они застряли в одном месте.
Может ли кто-нибудь помочь объяснить, какое ограничение вызывает это?
комп: WinVista 64-bit Home Premium, 6 ГБ оперативной памяти AMD 4800+ X2
сбой программы при использовании памяти в 4664 КБ
Источник:
#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)