0
私はほとんどセグメンテーションフォールトが関数が一度呼び出され、私のクラスの一つで、次のコードで発生した理由を、セグメンテーションフォールト
void fileTransfer::createFile(){
std::ofstream fout;
fout.open("th.txt", std::ios::binary | std::ios::out);
char *toSend = new char();
for (int i=0;i<totalSize_;i++) {
toSend[i]=totalData_.front();
totalData_.pop_front();
}
std::cout<<"stage 1"<< std::endl;
fout.write(toSend, totalSize_);
fout.flush();
std::cout<<"stage 2"<< std::endl;
fout.close();
std::cout<<"stage 3"<< std::endl;
}
を把握しようとしているんだし、私はうまく取得:
stage 1
stage 2
Segmentation fault (core dumped)
なぜこのようなことが起こっているのですか?
'char * toSend = new char();' - なぜ単に 'char toSend;'?理由がないのになぜ 'new'とメモリリークを導入するのですか? – PaulMcKenzie
あなたのtoSendは1つの文字を保持できます。代わりに新しいchar [totalSize_]を使用してください: – Jonas
'totalData_'とは何ですか? – PaulMcKenzie