看似简单的代码中的malloc错误?

时间:2017-03-24 04:20:30

标签: c++ arrays pointers dynamic-memory-allocation

我的简单课程A如下所示:

class A{
   char* seq;

   public:
      A(std::string seq);
      ~A();
      void printSeq();
};

A::A(std::string& seqstr ){
    this->seq = new char[strlen(seqstr.c_str())+1]();
    strcpy(seq, seqstr.c_str());
 }
A::~A(){
   delete[] this->seq;
}
A::printSeq(){
  for(int i=0; i<strlen(seq);i++){
     std::cout << seq[i];
   }
  std::cout << std::endl;
}

如果调用如下,则会导致错误。

const char *args[] = {"foo", "bar", "blah", "blahblah"};
std::vector<std::string> x(args, std::end(args));
std::vector<A> avec;
for(int i=0;i<x.size(); i++){
   avec.push_back( A( x[i] ) );
   avec[i].printSeq();
}

错误如下:

  

foo malloc: *对象0x7fea78610930的错误:指针被释放   没有分配   * 在malloc_error_break中设置断点以调试Abort trap:6

我不太确定导致此错误的原因。令我困惑的是,1)我们在这里创建一个动态数组,2)并复制输入字符串的元素。这是范围问题吗?我很感激你解决这个问题的任何帮助。

0 个答案:

没有答案