c ++ init char指针为null

时间:2011-11-03 15:20:05

标签: c++

我的类中有一个指向char的指针,后来用于引用char数组 我不知道的大小,因此我想把它称为char *

我似乎无法为其赋值null。

它仅显示为Bad Ptr异常

我怎么能将它初始化,所以在我的ctor中我可以为“char数组”分配空间 这就是我想要完成的事情,如果它是用c写的那么看起来很简单。

     ctor
     {
          if( m_data != NULL )
                   m_data = new char[m_size];
     }

5 个答案:

答案 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::stringstd::vector会更好。

答案 4 :(得分:0)

这真的很奇怪,您可以尝试将指针设置为'\ 0'或0并与之进行比较。在指向它之后它应该有一个内存地址,所以它不会为零。