我的简单课程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)并复制输入字符串的元素。这是范围问题吗?我很感激你解决这个问题的任何帮助。