Короткая задача:
#include <iostream>
using namespace std;
int main()
{
double **T;
long int L_size;
long int R_size = 100000;
long int i,j;
cout << "enter L_size:";
cin >> L_size;
cin.clear();
cin.ignore(100,'\n');
cout << L_size*R_size << endl;
cout << sizeof(double)*L_size*R_size << endl;
T = new double *[L_size];
for (i=0;i<L_size;i++)
{
T[i] = new double[R_size];
}
cout << "press enter to fill array" << endl;
getchar();
for (i=0;i<L_size;i++)
{
for (j=0;j<R_size;j++)
{
T[i][j] = 10.0;
}
}
cout << "allocated" << endl;
for (i=0;i<L_size;i++)
{
delete[] T[i];
}
delete [] T;
cout << "press enter to close" << endl;
getchar();
return 0;
}
с 2 ГБ ОЗУ (на 32-битной ОС) Я не могу заставить его работать с L_size = 3000
, что довольно очевидно, так как для этого потребуется прибл. 2.4 ГБ.
Но когда я запускаю 2 копии вышеуказанной программы, каждая с L_size = 1500
, она работает - очень медленно, но в итоге оба возвращают allocated
в консоли.
Таким образом, вопрос - как это возможно? Это связано с виртуальной памятью?
Можно ли хранить один большой массив в виртуальной памяти при работе с другой - в рамках одной программы?
Thx.