Sto eseguendo questo codice, compilato su 64 bit vC++ 2005, su Windows Server 2008 R2 con 32 GB. C'è una violazione di accesso all'interno del ciclo for.Assegnazione di oltre 4 GB di memoria in un sistema a 64 bit
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
double *x = new double[536870912];
cout << "memory allocated" << endl;
for(long int i = 0; i < 536870912; i++)
{
cout << i << endl;
x[i] = 0;
}
delete [] x;
return 0;
}
Quindi, se non v'è alcuna eccezione nel nuovo doppio [536870912], perché mi appare una violazione di accesso quando si fa un incarico su una particolare posizione array?
Un altro punto degno di nota è che questo programma è stato testato con successo su un altro computer.
Un eccesso di commissione potrebbe essere il colpevole. – syam
Un problema è che (penso) 'long int' è 32 bit su Windows a 64 bit, quindi il ciclo non terminerà mai. Dovresti cambiare il tipo di 'i' in' size_t' per essere sicuro che sia abbastanza grande per qualsiasi indice di array. Non ho idea se sia l'unico problema, però. –
Il fatto è che stampa oltre un centinaio di numeri e poi c'è una violazione di accesso, quindi sembra che non stia raggiungendo il limite. – Jordi