我們有接受FILE *(CImg)的庫。出於性能原因,我們希望處理已經在內存中的數據而不訪問磁盤。目標平臺是一種遺憾的是不支持fmemopen窗口(和funopen)內存FILE *(無磁盤訪問)
char* buf = new char[sz];
FILE *fp = fopen("C:\\test.dat", "wb");
int r = setvbuf(fp, buf, _IOFBF, sz);
r = fwrite(src_buf, 1, sz, fp); // Here r contains right size
fseek(fp, 0, SEEK_END);
size_t sz2 = ftell(fp); // sz2 contains right size as well
rewind(fp);
// Test (something like this actually is somewhere deep inside library)
char* read_buf = new char[sz];
r = fread(read_buf, 1, sz, fp); // Zero!
最終FREAD()不能讀什麼?有什麼建議?
爲什麼用C++標記?這看起來像C. – Dai
有沒有使用內存映射文件的可能性? – user3344003
'fp'被打開爲只寫。 – aschepler