나는 C++에서 벡터를 .bin 파일에 쓰고 싶습니다. 이 벡터의 유형은 byte
이며, 바이트 수는 거대하거나 수백만이 될 수 있습니다. 나는 이런 식으로 일을하고있다 :바이트를 .Bin 파일로 작성
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이 공간을 할당하지 않는 것으로 보입니다. 공간에 문제가 있습니까?
순차 메모리의 청크가 너무 길어서 빈에 쓸 수 없습니까?
왜 벡터를 버퍼에 복사합니까? 'depthQueue'는 어떤 타입입니까? –