如何测试/验证零初始化是否发生

How to test/verify that zero-initialization takes place

本文关键字:初始化 是否 验证 何测试 测试      更新时间:2023-10-16

我正在尝试使用g++选项-std=c++98、-std=c++03、-std=c++11 在虚拟机上测试零初始化

不幸的是,没有那么多垃圾值,我看到了不应该有的零

如何强制一些随机值,以便我可以测试它?

#include <iostream>
#include <string>
using namespace std;
class A
{
public:
    int a;
};

class B
{
public:
  B(){}
  int x;
};
int main()
{
    {
    int tab[50000] = {0};
    }
    A a;
    A* aa = new A;
    B b;
    B* bb = new B;
    cout << a.a << endl;
    cout << aa->a << endl;
    cout << b.x << endl;
    cout << bb->x << endl;
    return 0;
}

不能保证看到随机数。C/C++标准只是说未初始化的值是未定义的,你不能说这些值有哪些。零是可以的(可能病毒机器在分配之前将所有内存清零)。

如果您确实需要随机数,请使用<random> 生成它们