作为标题
#include <iostream>
int main() {
auto* a = new float[1000000];
auto* b = new float[10]();
for(auto i=0; i<1000000; i++){
std::cout << "a" << a[i] << std::endl;
}
for(auto i=0; i<10; i++){
std::cout << "b" << b[i] << std::endl;
}
return 0;
}
有什么区别?我尝试过两种输出都是零。
另外,智能指针怎么样才能确保它可以进行零初始化?
std::unique_ptr<int[]> p = std::make_unique<int[]>(100);
a
包含零的一个可能的实际原因是new
从操作系统获取了零初始化的内存。例如,在 Linux 中,当您使用mmap
(并且new
可以在内部使用它来分配大块)时,您会获得零初始化的内存。 - Evg