我的班级有一部分用于逐字节读取数据,直到'\0'
出现。
RESULT MyClass::readMethod(DataInputStream& s)
{
if ( condition = ok )
{
char tmp[32];
uint8 i = 0;
do {
tmp[i] = s.read_int8();
} while (tmp[i++] == '\0');
char *arr= new char[i];
for (uint8 j = 0; j < i; ++j)
{
arr[j] = tmp[j];
}
//delete[] arr;
}
}
我为这篇文章删除了很多代码,因为休息不太重要 我的问题是,我想释放记忆,但因为我有方法:
我试过把它放到析构函数中:
MyClass::~MyClass()
{
delete [] arr;
}
但编译器(我使用Visual Studio 2010)强调它并说:"Error: identifier arr is undefined".
我无法在评论的地方使用它,因为我有以下方法:
char * getArr()
{
return arr;
}
但是,如果我可以在课外访问arr
,我不知道它是否会起作用。我还在学习C ++和OOP,有时候我很困惑
类似的问题在于构造函数:如何将arr
初始化为空。
答案 0 :(得分:0)
你的arr是readMethod的本地人。所以析构函数不知道它。你必须将arr声明为类成员。
class MyClass
{
private:
char* arr;
}
然后你可以在你的析构函数中删除它。