0

巨大なPDFファイルを処理する必要がある場合があります。そのような場合、ループで新しい演算子を使用します。これは非常に巨大なループであるため、10GBを超えるメモリが使用されます。ご存知のとおり、ハードディスクを使用するには、いくつかのWINAPI関数を使用する必要があります。しかし、私はそれを実装する方法がわかりません。誰でも私を助けることができますか?

コードスニペットは次のとおりです。

CMyObject gg_data;
for(__int64 i = 0; i < up_limit(__int64); ++i)
{
   //add new data to the PDF file
   CCAry pData = new CCAry("myData");
   gg_data.AddRef(pData);
}

//after the loop, save file and free memory so that no memory leaks occur...
//Caution: the "save" is a very expensive work, it will take several hours!!!
gg_data.save();
4

2 に答える 2

2

メモリマップトファイルが必要です。これにより、ファイルがメモリの「バッファ」にマップされ、OSがファイルを管理して、ファイルをRAMの巨大なチャンクであるかのように操作できるようにします。

于 2013-01-16T13:00:40.137 に答える
0

Windows固有の割り当て呼び出しを使用する場合は、おそらくに行く必要がありますVirtualAlloc()newしかし、使用はすでに仮想メモリを割り当てているので、ハードディスクへのページングは​​Windowsでも処理する必要があると思います。

このような大量のメモリを使用している場合は、ハードディスク上のページファイルのサイズを大きくする必要がある場合があります。

于 2013-01-16T13:00:26.767 に答える