.bin ファイルに書き込みたい C++ のベクトルがあります。このベクトルの型はbyte
であり、バイト数は非常に大きく、おそらく数百万になる可能性があります。私はこのようにやっています:
if (depthQueue.empty())
return;
FILE* pFiledep;
pFiledep = fopen("depth.bin", "wb");
if (pFiledep == NULL)
return;
byte* depthbuff = (byte*) malloc(depthQueue.size() * 320 * 240 * sizeof(byte));
if(depthbuff)
{
for(int m = 0; m < depthQueue.size(); m++)
{
byte b = depthQueue[m];
depthbuff[m] = b;
}
fwrite(depthbuff, sizeof(byte),
depthQueue.size() * 320 * 240 * sizeof(byte), pFiledep);
fclose(pFiledep);
free(depthbuff);
}
depthQueue
バイトを含む私のベクトルで、そのサイズは 100,000 です。
このエラーが発生しない場合もありますが、bin ファイルは空です。
ヒープエラーが発生することがあります。
これをデバッグすると、malloc がスペースを割り当てていないように見えることがあります。問題はスペースですか?
それともシーケンシャルメモリのチャンクが長すぎてビンに書き込めないのでしょうか?