instream close c ++中的分段错误

时间:2017-01-15 20:51:05

标签: c++ segmentation-fault ofstream

我很难在我的一个类中找出以下代码中出现分段错误的原因,该函数被调用一次,

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)

任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:4)

此:

  char *toSend = new char();

创建一个指向单个动态分配字符的指针,然后将其视为多个字符的数组。你可以使用:

  char *toSend = new char[totalSize];

或类似,但实际上您想使用std::vector <char>std::string