【发布时间】:2014-02-18 21:34:28
【问题描述】:
这是我的第一堂课
class Wiersz
{
private:
char *zawartosc;
public:
Wiersz():zawartosc(NULL){}
Wiersz(const char *z)
{
this->zawartosc = new char[strlen(z) + 1];
strcpy_s(this->zawartosc, (strlen(z) + 1) * sizeof(char) , z);
zawartosc[strlen(z) ] = '\0';
}
void usun()
{
delete [] zawartosc;
}
~Wiersz()
{
usun();
}
};
我的结构是二等的
struct El_tekst
{
Wiersz *wiersz;
El_tekst *next;
El_tekst():next(NULL),wiersz(NULL){}
};
这是我的第二节课
class Tekst
{
protected:
El_tekst *tekst;
public:
Tekst(): tekst(NULL){}
~Tekst()
{
El_tekst *_rob;
while(this->tekst != NULL)
{
_rob = this->tekst;
this->tekst = this->tekst->next;
_rob->wiersz->usun();
delete _rob;
}
}
Tekst & operator<<(const char *dod_tekst)
{
if(this->tekst == NULL)
{
this->tekst = new El_tekst();
this->tekst->wiersz = new Wiersz(dod_tekst);
}
else
{
El_tekst *_rob = this->tekst;
while(_rob->next != NULL)
{
_rob = _rob->next;
}
(_rob->next) = new El_tekst();
(_rob->next)->wiersz = new Wiersz(dod_tekst);
}
return *this;
}
};
这是第三课
class Edytor_tekstu : public Tekst
{
private:
int numer_aktualnego_wiersza;
public:
Edytor_tekstu():numer_aktualnego_wiersza(0){}
~Edytor_tekstu(){}
};
现在是主要功能:
void main()
{
Edytor_tekstu b;
b<<"ala";
}
有 4 个字节的哑内存,我哪里出错了? 可能我分配了一些不应该的东西,或者我的析构函数真的很糟糕。
【问题讨论】:
-
不,我不能。但 Valgrind 可以。
标签: c++ memory-leaks byte destructor