unsafe相关内容

暂时将 [u8] 转化为 [u16]

我有一个 [u8;16384] 和 u16.我将如何“临时转换"数组,以便我可以一次设置两个 u8,第一个到最低有效字节,第二个到最高有效字节? 解决方案 正如 DK 建议的,你可能不应该真正使用 unsafe 代码来重新解释内存......但如果你愿意,你可以. 如果你真的想走那条路,你应该注意几个问题: 您可能遇到对齐问题.如果您只是从某处获取一个 &mut [u8] 并将 ..
发布时间:2021-11-18 02:20:16 其他开发

在 Safari 10 中在哪里设置不安全模式以使 java 插件访问本地文件

我刚刚将 Safari 从 Safari 9 更新为 safari 10 测试版.我的客户端是一个从页面运行的 Java 小程序.在 Safari 9 及之前的版本中,它运行正常.但是在 Safari 10 测试版中,它失败了.我发现 safari 10 阻止从 Java 小程序访问本地文件.所以我认为是因为java插件在安全模式下运行.但是在 Safari ->preferences->secu ..
发布时间:2021-11-16 22:24:00 其他开发

如何在“visual studio code"中运行不安全的代码?

我正在使用 Visual Studio 代码,当我尝试运行不安全代码时,它会引发以下错误“消息":仅当使用/unsafe 编译时才会出现不安全代码 和visual studio一样,它没有像project->properties这样的选项. 解决方案 不安全(C# 编译器选项) 要在 Visual Studio 开发环境中设置此编译器选项,请打开项目的“属性"页面. 单击 ..
发布时间:2021-09-19 19:52:55 C#/.NET

错误 lnk2026:模块对于 safeseh 图像不安全

我在构建示例 Visual C++ 项目时遇到此错误.首先我下载了​​3个示例项目,都解决了同样的问题,打印出所有小于N的质数(你可能知道这些示例项目?).我没有任何问题地构建了纯 C 项目.但是当我尝试构建基于程序集的项目时,我遇到了这个错误. 谢谢. 解决方案 尝试禁用 SAFESEH. 来自规范:指定了/SAFESEH,但模块与安全异常处理功能不兼容. ..
发布时间:2021-09-18 18:56:42 其他开发

从 C# 调用 C++ 函数 - 堆栈不平衡

我有一个带有以下签名的非托管 C++ 函数: int 函数(char* param, int ret) 我正在尝试从 C# 调用它: 不安全委托 int MyFunc(char* param, int ret); ... int Module = LoadLibrary(“fullpathToUnamanagedDll");IntPtr pProc = GetProcAddress(Mo ..
发布时间:2021-09-14 20:07:52 C#/.NET

Marshal.SizeOf 和 sizeof 的区别,我就是不明白

直到现在我才认为 Marshal.SizeOf 是计算非托管堆上 blittable 结构的内存大小的正确方法(这似乎是 SO 上的共识以及网络上几乎所有其他地方的共识). 但是在阅读了一些针对 Marshal.SizeOf 的警告之后 (这篇文章在“但是有一个问题......"之后)我试过了,现在我完全糊涂了: public struct TestStruct{公共字符 x;公共服务;} ..
发布时间:2021-09-14 20:07:30 C#/.NET

memcpy NativeArray Index to NativeArray Index, of Length,怎么办?

Unity 中的 NativeArrays 没有从一个到另一个的部分复制功能. 有多种方法可以解决这个问题(NativeSlices 和 GetSubArray),但最理想的是零检查、所有信任、memcpy. 然而,我能想到的最接近的是这个,它什么也不做; 使用 Unity.Collections ;使用 Unity.Collections.LowLevel.Unsafe ;命名空间 ..
发布时间:2021-09-14 19:34:13 C#/.NET

在安全的 Rust 中是否可能出现未定义的行为?

有没有办法在不使用 unsafe 的情况下在 Rust 中实现未定义的行为? 当然,这样的行为可以被第三方库包装在一个“安全"的文件中.函数,所以假设我们只使用标准函数. 解决方案 绝对可以,但是 任何此类情况都是 Rust 或标准库的错误. 我最喜欢的例子是LLVM 循环优化可以使安全程序崩溃,这实际上是由于 Rust 和 LLVM 语义的不良交互而发生的: pub fn ..
发布时间:2021-09-13 20:40:49 其他开发

mem::forget(mem::uninitialized()) 是定义的行为吗?

在 mutagen 中,我注入了各种代码中的突变.我想改变的一件事是模式如果让 Ok(x) = y { .. }.然而,这带来了相当大的挑战,因为我无法知道 y 的类型——用户可以使用一元 Ok 变体.对于我们遇到的情况,我仍然可以机会性地对其进行变异实际上有一个 Result 其错误类型使用 trait 实现了 Default看起来像下面的简化: #![特征(专精)]酒吧特质错误{fn err ..
发布时间:2021-09-13 20:40:23 其他开发

将结构转换为数组是否合法?

考虑以下事项: //只是一系列相同类型的相邻字段#[repr(C)]#[派生(调试)]结构 S T{在,乙:T,时间:T,d : t,}impl科技{fn new(a : T, b : T, c : T, d : T) ->自己 {自己 {一种,乙,C,d、}}//将其重新解释为数组fn as_slice(&self) ->&[T] {不安全 { std::slice::from_r ..
发布时间:2021-07-13 21:23:42 其他开发

在 T 和 UnsafeCell T 之间转换是否安全和定义行为?

一个最近的问题正在寻找构建自我参照结构的能力.在讨论该问题的可能答案时,一个可能的答案涉及使用 UnsafeCell 用于内部可变性,然后通过 {:?}", v.value, v.myself.upgrade().map(|v| v.value))} 此代码似乎打印出我所期望的内容,但这并不意味着它是安全的或使用了已定义的语义. 从 UnsafeCell 转换为 T 内存安全吗?它会调 ..
发布时间:2021-07-13 21:13:29 其他开发

如果strong_count 为1 且weak_count 为0,包含`Rc` 的`Send` 结构是否安全?

我有一个不是 Send 的结构体,因为它包含 Rc.假设 Arc 的开销太大,所以我想继续使用 Rc.我仍然希望偶尔在线程之间Send这个结构,但前提是我可以验证Rc有strong_count 1和weak_count 0. 这是我想到的(希望是安全的)抽象: mod my_struct {使用 std::rc::Rc;#[派生(调试)]酒吧结构我的结构{reference_counted ..
发布时间:2021-07-13 20:32:20 其他开发

如何从原始指针获取数组或切片?

我能以某种方式从 std::ptr::read 获取一个数组吗? 我想做一些接近于: let mut v: Vec= ...让 view = &some_struct as *const _ as *const u8;v.write(&std::ptr::read(view)); 在这种形式中无效(不能使用数组签名). 解决方案 如果您想从原始指针中获取切片,请使用 std::s ..
发布时间:2021-07-13 20:27:24 其他开发

如何从“盒子"中获得拥有的价值?

这个函数的实现是什么: fn unbox(value: Box) ->T{//???} 文档中唯一一个看起来像我想要的函数是 Box::into_raw.以下将进行类型检查: fn unbox(value: Box) ->T{*value.into_raw()} 这给出了错误error[E0133]: dereference of raw pointer requires unsafe f ..
发布时间:2021-07-13 20:14:32 其他开发

如何在另一个生成字节码类中使用匿名类实例

我很难使用由 Unsafe.defineAnonymousClass() 加载的生成的字节码类.我想知道如何使用匿名类的对象来初始化另一个类(或匿名类). 以下面的示例类 Callee 为例,其构造函数接受 Callee2 作为参数. 类被调用者{Callee2 _call2;公共被调用者(Callee2 callee2){...}} 在运行时,我为 Callee2 和 Callee 生 ..
发布时间:2021-07-06 18:47:55 Java开发

C#:通过反射检索和使用 IntPtr*

我目前正在处理一些代码,这些代码反映了从调用中编组回本机 dll 的结构.一些结构包含指向空终止指针数组的 IntPtr* 字段.这些字段需要特殊处理.当反射结构时,我可以识别这些字段,因为它们由自定义属性标记. 以下说明了我正在尝试做的事情: public void ProcessStruct(object theStruct){foreach (FieldInfo fi in theS ..
发布时间:2021-07-06 18:47:33 C#/.NET

替换实现接口并从基类继承的声明类型的 C# 方法

为了对遗留代码进行单元测试,我试图在运行时换出方法的内容.我一直在处理这些 SO 答案; 动态替换 C# 方法的内容? 如何在我的方法的指针中替换指向重写(虚拟)方法的指针?(发布 x64 和 x86) 这是我目前所拥有的完整代码示例. 使用系统;使用 System.Diagnostics;使用 System.Reflection;使用 System.Runtime.Compile ..
发布时间:2021-06-18 19:57:23 C#/.NET

为什么通过 Pointer 转换结构很慢,而 Unsafe.As 很快?

背景 我想制作一些整数大小的 struct(即 32 位和 64 位),它们可以轻松转换为相同大小的原始非托管类型(即 Int32 和 UInt32 尤其适用于 32 位大小的结构. 然后,这些结构将公开用于位操作/索引的附加功能,而这些功能在整数类型上无法直接使用.基本上,作为一种语法糖,提高可读性和易用性. 然而,重要的部分是性能,因为这种额外的抽象本质上应该是 0 成本(在 ..
发布时间:2021-06-15 19:14:22 C#/.NET