我最近观看了Miro Kenjp在CppCon上的演讲,题为“不符合规范的C ++:委员会对您隐藏的秘密”。
在28分30秒处(https://youtu.be/IAdLwUXRUvg?t=1710),他指出访问相邻的double类型具有未定义行为,但我不太明白为什么。 有人能解释一下这是为什么吗?
如果是这种情况,那么以这种方式访问其他内容肯定也具有未定义行为,例如:
int* twoInts = malloc(sizeof(int) * 2);
int secondInt = twoInts[1]; //Undefined behaviour?
twoInts [1] = 10
,这应该是定义良好的行为吗?你能否详细解释一下视频中的原因? - nameint * good_two_ints = new(twoInts) int[2]{};
,然后继续使用good_two_ints
而不是twoInts
。这将使用放置new在malloc
获取的内存中实际创建一个数组对象。 - NathanOlivermalloc
没有在其中提及,因此malloc
不会创建对象。 - NathanOliver