Non è possibile chiamare la funzione fwrite per scrivere in un buffer che è maggiore di 64 MB in Visual C++ 2005, Visual C++ .NET 2003 o Visual C++ .NET 2002

Sintomi

Si consideri il seguente scenario. In Microsoft Visual C++ 2005, Microsoft Visual C++ .NET 2003 o Microsoft Visual C++ .NET 2002, utilizzare la funzione fopen per aprire un file in un'unità di rete. Nella chiamata di funzione, utilizzare il tipo di accesso wb (scrittura e binario) come il parametro mode . Se quindi si chiama la funzione fwrite per scrivere in un buffer di dimensioni superiori a 67,076,095 byte, la funzione chiamata ha esito negativo.

Nota 67,076,095 byte sono circa 64 megabyte (MB).

Causa

Il problema si verifica a causa di una limitazione del sistema operativo.

Soluzione alternativa

Per risolvere questo problema, utilizzare uno dei seguenti metodi:
  • Quando si apre un file, utilizzare il tipo di accesso w + b (lettura e scrittura) come il parametro mode .
  • Utilizzare un buffer di dimensioni inferiore. Quindi, chiamare la funzione fwrite in un ciclo fino a scrivere il numero di byte che si desidera che il file.

Riferimenti

Per ulteriori informazioni sulle funzioni fopen e fwrite , visitare i seguenti siti Web Microsoft Developer Network (MSDN):
Proprietà

ID articolo: 899149 - Ultima revisione: 18 feb 2017 - Revisione: 2

Feedback