返回信息流跑了几次,都是0
这是一条镜像帖。来源:北邮人论坛 / cpp / #102069同步于 2022/8/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
输出一定是0?
xiaobing307
2022/8/10镜像同步28 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
结构体中的基础类型和指针类型被称为 POD(plain-old-data),不会被初始化为 0。你输出的结果是0,是因为程序申请到的那块内存刚好是0.
【 在 xiaobing307 的大作中提到: 】
: 跑了几次,都是0
: [upload=1][/upload]
如7L所言,本来应该是随机的内存的,不应该是0
但是这里调用了默认构造函数,如1L所言
看汇编的话的确是全部被赋值为0了.
https://gcc.godbolt.org/z/3Ex6Ebdv9
也没有
warning: 't.T::a' is used uninitialized [-Wuninitialized]
这样的警告
不过还是建议手工处理好POD的初始化
【 在 lonGG 的大作中提到: 】
: 如7L所言,本来应该是随机的内存的,不应该是0
: 但是这里调用了默认构造函数,如1L所言
: 看汇编的话的确是全部被赋值为0了.
: ...................
试了试换不同编译器最终都是初始化为0的,不管有没有生成默认构造函数。
标准应该是这种平凡默认初始化有规定的。
现在有点搞不清POD类型和平凡类型的区别,不知道委员会整这两个概念有啥意义。不知道有没有大佬可以给解答一下?