这是我的班级,我的问题是当我调用构造函数
时Eveniment e1(1,m1);
在main方法中使用参数,我的程序正在停止,我不知道为什么。 M1是IntrareCAlendar的对象。
class Eveniment{
private:
const int id;
IntrareCalendar data;
char* detalii;
int static nrIntrari;
public:
Eveniment(int nr,IntrareCalendar ic) :id(nr){
this->data = ic;
nrIntrari++;
}
~Eveniment(){
if (this->detalii != NULL)
delete[]this->detalii;
}
};
我该怎么办?非常感谢!
答案 0 :(得分:5)
您永远不会将detalii
设置为有效的任何内容。它仍然未初始化 - 不自动初始化为特定值。您可以在构造函数中将其设置为nullptr
。 (不要在C ++中使用NULL
。)
您的析构函数在该成员上调用delete[]
,但在此之前没有调用new[]
。因此,程序的行为未定义。
另外,如果多个线程实例化static std::atomic<int>
,请考虑使用nrIntarari
作为Eveniment
的类型。