C ++在堆上创建数组而不初始化它

时间:2017-10-30 18:42:03

标签: c++ arrays stack heap

当您创建这样的数组(在堆栈上)时:

float array[5];

然后遍历元素

for (int i = 0; i < 5; i++) {
    std::cout << array[i] << " ";
}

它给出了这个

1.4013e-45 0 0 0 5.88052e-39

表明它尚未初始化。 但是当我这样做时(在堆上):

float* array = new float[5];

输出

0 0 0 0 0

如何在不初始化的情况下在堆上创建数组?

2 个答案:

答案 0 :(得分:2)

它没有初始化值。运行此代码会显示。

float* array = new float[5];
for (int i = 0; i < 5; i++) {
    array[i] = 5;
    std::cout << array[i] << " ";
}
std::cout << std::endl;
delete[] array;
float* array2 = new float[5];
for (int i = 0; i < 5; i++) {
    std::cout << array2[i] << " ";
}

然后输出

5 5 5 5 5 
0 0 5 5 5

或类似的东西。

答案 1 :(得分:0)

的结果
MagicMock

不修改内存,但堆内存可能已经有值,或者由实现初始化为具有特定值。