ファイルの内容をバッファにコピーしようとしています。
std::ifstream fp(myFile, std::ios::binary)
fp.seekg(0, fp.end); // set cursor at the end
int length = fp.tellg(); // get data size
fp.seekg(0, fp.beg); // go back to buffer begin
char data[1000];
if(length<1000) {
memcpy(data, fp.rdbuf(), length); // This crash
std::stringstream contents;
contents << fp.rdbuf();
memcpy(data, contents->str().c_str(), length); // works fine
}
rdbuf を直接使用してコピーするとクラッシュしますが、stringstream でコピーしてからバッファでコピーすると問題なく動作します。
誰か説明がありますか?