我有一个名为chaine的类,如下代码所示:
class Chaine {
unsigned int _size;
char* _data;
public:
Chaine();
~Chaine();
Chaine(const char* str);
unsigned int size() const;
char get(unsigned int i);
};
我已经编写了一个函数,它以chaine为例,不做任何事情(附录)。总的来说,当我调用附件(ch1)时,它给了我一个错误,即“双重自由或腐败(fasttop)”。呼叫附件(CH2)工作正常。如果我在引用一个实例时使用了annex函数,它是有效的,但我不明白为什么。
void annexe(Chaine s) {
}
int main() {
Chaine ch1("Achraf");
Chaine *ch2 = new Chaine("AchrafA");
printf("%d\n", ch1.size());
printf("%d\n", ch2->size());
annexe(ch1);
annexe(*ch2);
delete ch2;
return 0;
}
我的施工人员和描述人员如下:
Chaine::Chaine() {
_size = 0;
_data = NULL;
printf("constructor %s(%d): %s\n", __FILE__,__LINE__,__func__);
}
Chaine::Chaine(const char* str) {
_size = strlen(str);
_data = new char[_size+1];
strcpy(_data, str);
}
Chaine::~Chaine() {
if (_data != NULL) {
delete[] _data;
}
printf("destructor %s(%d): %s\n", __FILE__,__LINE__,__func__);
}