1

我的构造函数可以很好地创建一个副本 - 但是当一个方法将 IntegerNumber 作为参数时,它会停止工作。

我的构造函数:

IntegerNumber::IntegerNumber(const IntegerNumber &integerInput){
//Creates a copy of an Integer Number
//Set len and isNegative
len = integerInput.len; 
isNegative = integerInput.isNegative;
//Fill integer with IntegerInput
integer = new char[len+1];
for(int i = 0; i <= len; i++)
    integer[i]=integerInput.integer[i];
}

我的析构函数:

IntegerNumber::~IntegerNumber(){
//Destructs IntegerNumber
delete [] integer;
delete &len;
delete &isNegative;
}

我的班级的数据成员:

private:
    char *integer;
    int len;
    bool isNegative;

请尝试帮助我弄清楚我的构造函数/析构函数可能有什么问题,导致程序停止但不会崩溃或中断?

4

2 回答 2

4

你不想要这个:

delete &len;
delete &isNegative;

像这样删除实例变量是未定义的行为,因此您的程序可以停止

于 2012-07-14T22:53:53.917 回答
1

使用std::unique_ptr和其他来管理内存 - 总是。动态数组特别适用于std::vector<T>. 不要手动管理你的记忆——你会得到所有的错误。

于 2012-07-14T23:00:39.233 回答