我的类中有一个指向char的指针,后来用于引用char数组 我不知道的大小,因此我想把它称为char *
我似乎无法为其赋值null。
它仅显示为Bad Ptr异常
我怎么能将它初始化,所以在我的ctor中我可以为“char数组”分配空间 这就是我想要完成的事情,如果它是用c写的那么看起来很简单。
ctor
{
if( m_data != NULL )
m_data = new char[m_size];
}
答案 0 :(得分:6)
不要测试未初始化的数据是否为NULL,只需执行:
MyClass::MyClass(): // ctor
m_size(/* something appropriate */), // Note: m_size must precede m_data in the
// class' definition
m_data(new char[m_size])
{
}
答案 1 :(得分:3)
使用初始化列表:
ctor(const size_t n) : m_size(n), m_data(new char[n]) {}
另外,std::vector
通常是你在c ++中用于具有这种形式的类的。{/ p>
答案 2 :(得分:2)
成员变量始终存在,您不必检查NULL
。
答案 3 :(得分:1)
创建对象时,除非您明确说明,否则char*
不会初始化为NULL
ctor
{
m_data = NULL;
}
如果您不这样说,那么该值将是垃圾,并且如果您使用/取消引用它将调用未定义的行为。
稍后当您想要创建数组时,您可以:
method
{
if(!m_data)
m_data = new[] ...
}
或者如果您在创建对象时知道数组的大小,那么您可以像其他人一样建议
ctor : m_data(new char[size]);
如果你真的需要char *,你应该仔细检查。也许std::string
或std::vector
会更好。
答案 4 :(得分:0)
这真的很奇怪,您可以尝试将指针设置为'\ 0'或0并与之进行比较。在指向它之后它应该有一个内存地址,所以它不会为零。