Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 67.3MB ·虚拟内存 1299.5MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
类型系统你给我滚开!我要自己解析这些字节,不成功便成仁!虽然本书都是关于非安全的内容,我还是希望你能仔细考虑避免使用本章讲到的内容。这是你在Rust中所能做到的真真正正、彻彻底底、最最可怕的非安全行为。所有的保护机制都形同虚设。
mem::transmute<T, U>
接受一个T
类型的值,然后将它重新解析为类型U
。唯一的限制是T
和U
必须有同样的大小。可能产生未定义行为的情况让人看着头疼。
&
变形为&mut
是未定义行为
&
变形为&mut
永远都是未定义行为mem::transmute_copy<T, U>
很神奇地比这更加不安全。它从&T
拷贝size_of<U>
个字节并将它们解析为U
。mem::transmute
仅有的类型大小的检查都不见了(因为拷贝类型前缀有可能是合法的),只不过U
的尺寸比T
大会被视为一个未定义行为。
当然,本章大部分的功能都可以通过指针的显式转换实现。
未初始化内存:所有运行期分配的内存开始时都是"未初始化"状态。这种状态下内存的值是一组不确定的字节,甚至有可能不是使用这块内存的类型的合法值。将这段内存的值解析为任何类型都是未定义行为。千万不要这么做。Rust提供了处理未初始化内存的方式, ...