假设平台没有公开另一种查看内存位置的方法(我知道 C++ 通常被编译为实际的机器代码),是否有可能,例如它的方式? JavaScript?
我知道有一些实用程序,例如
memcpy
和 bit_cast
。 IIUC,它们适用于语言语法或标准库可以生成的任何数据。但是,它是否符合提供自定义类型的实现的 C++ 标准,或者可能是使用普通类型的工具(如奇异的分配器),可以向其成员分配一些值,但程序员无法编写任何内容(或 #include
,即使来自不受信任的来源)也能够以不受控制的方式读取它们?
是的,这是合法的。未定义的行为可能包括针对给定环境的典型或记录的行为方式。因此,您建议的 C++ 扩展应该以这样的方式设计:根据标准使用它们是 UB,但仍由实现记录。