使用new创建指针数组,这样指针就不会初始化为NULL
Creating array of pointers using new such that they are not initialized to NULL
当我使用这个时:
int** newData = new int*[100];
我得到一个由100个对象(指针)组成的数组,并对它们调用默认构造函数,这会导致指针为NULL
。
如果这是代码的关键部分,并且我想避免数组的无效,我能以一种好的方式避免它吗?(不使用malloc
)
这是一个实现质量问题。指针不能保证在您显示的代码中初始化。在C++中,没有其他方法可以动态分配一个指针数组,从而保证更高的性能。
(指针没有构造函数,它们要么已初始化,要么未初始化。)
在您的情况下没有进行constructor
调用,您得到的是一个由100个指针组成的数组,这些指针要么恰好被零填充,要么编译器已经放入了这样做的代码。当调用new
时,语言标准不要求初始化此数组。
现在,针对您的另一个问题:如果这是在critical part of code
中,为什么不在程序初始化时简单地预分配所需的数组?这样,您就不需要担心一些随机代码将指针设置为预定义值。
相关文章:
- 如何使用数据对象上的常量指针初始化类
- 使用指针初始化 char 数组或字符串 C++
- 使用无效指针初始化指针声明符的行为是否未定义?
- 指针:初始化与声明
- 启动线程会导致指针初始化时出现分段错误
- 使用函数声明进行函数指针初始化 - 是否可能
- 类初始化中的指针初始化
- 结构数组的指针初始化
- 如何从其抽象母类上的指针初始化子类?
- C 用结构指针初始化结构
- 如何用无效指针初始化unique_ptr的向量
- PCL中的这些增强指针初始化是不同的
- 通过指针初始化结构
- 从函数指针初始化成员函数
- 使用作用域内生成的指针初始化静态成员
- 使用"this"指针初始化 std::array
- C++缺乏指针初始化和使用逻辑
- constexpr 使用指针初始化
- C 指针初始化的不良初始化可能是什么后果
- 指针初始化无效?如果不是,那是什么