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