下游关闭c ++中的分段错误
segmentation fault in ofstream close c++
好吧,我几乎没有试图弄清楚为什么我的 类 中的以下代码会出现分段错误,该函数被调用一次,
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 char[totalSize];
或类似,但你真的想使用 std::vector <char>
或 std::string
。
好吧,我几乎没有试图弄清楚为什么我的 类 中的以下代码会出现分段错误,该函数被调用一次,
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 char[totalSize];
或类似,但你真的想使用 std::vector <char>
或 std::string
。