C ++访问内存冲突

时间:2015-01-27 14:50:31

标签: c++

我尝试实例化时遇到了访问内存错误:

Ferma(long _id, int _supr, int _nrp, Produs *_produse) :idFerma(_id),suprafata(_supr),nrproduse(_nrp){
    for (int i = 0; i < this->nrproduse; i++)
        produse[i] = _produse[i];
    nrFerme++;
}

这是类的构造函数; visual studio将我引导到重载operator =的第二行=作为错误的原因;

Produs &operator=(const Produs p){
    this->pret = p.pret;
    this->stoc = p.stoc;
    this->denumire = new char[strlen(p.denumire) + 1];
    strcpy(this->denumire, p.denumire);
    return *this;
} 

这是重载的operator =

Ferma f3(55, 1500, nr, prod);

我已经从文件中读取了prod数组,看起来还不错;顺便说一下,我知道我不应该使用char *但这是我必须这样做的方式..所以任何帮助都将不胜感激

1 个答案:

答案 0 :(得分:0)

您的赋值运算符生成副本

Produs &operator=(const Produs p){

在源实例中,你的拷贝构造函数也正确实现了吗?