C++ 访问内存冲突

C++ Access memory violation

本文关键字:冲突 内存 访问 C++      更新时间:2023-10-16
我在

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

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 将我定向到重载运算符 = 的秒行作为错误的原因;

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;
} 

这是重载运算符 =

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

我已经从文件中读取了 PROD 数组,似乎还可以;顺便说一句,我知道我不应该使用 char *,但这是我必须这样做的方式。所以任何帮助将不胜感激

您的赋值运算符会复制

Produs &operator=(const Produs p){

在源实例中,您的复制构造函数是否正确实现?