我想知道在使用new的堆上创建的对象中的内置类型是否会被初始化为零?它是由标准强制要求还是特定于编译器?
给出以下代码:
#include <iostream>
using namespace std;
struct test
{
int _tab[1024];
};
int main()
{
test *p(new test);
for (int i = 0; i < 1024; i++)
{
cout << p->_tab[i] << endl;
}
delete p;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行时,它会打印全部为零.
Mik*_*our 11
您可以选择是否要进行默认初始化,使基本类型(和一般的POD类型)保持未初始化,或者初始化为零,从而对基本(和POD)类型进行零初始化.
int * garbage = new int[10]; // No initialisation
int * zero = new int[10](); // Initialised to zero.
Run Code Online (Sandbox Code Playgroud)
这是由标准定义的.
| 归档时间: |
|
| 查看次数: |
5069 次 |
| 最近记录: |