当您创建这样的数组(在堆栈上)时:
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
如何在不初始化的情况下在堆上创建数组?
答案 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
不修改内存,但堆内存可能已经有值,或者由实现初始化为具有特定值。