unsafe相关内容

如何测试 AccessViolationException 的处理

我需要编写一个测试来验证我的代码是否可以处理 AccessViolationException(或任何其他 WIN32 损坏状态异常 - CSE),该异常发生在不安全的上下文中,通常是通过调用 3rd 方库.这一切都应该在 .net 4.0 上使用 C# 完成. 我发现了这个相关问题如何处理 AccessViolationException 和这篇相关文章 http://dotnetslac ..
发布时间:2021-11-26 20:10:41 C#/.NET

为什么 *(int*)0=0 不会导致访问冲突?

出于教育目的,我正在编写一组在 C# 中导致运行时异常的方法,以了解所有异常是什么以及导致它们的原因.现在,我正在修补导致 AccessViolationException 的程序. (对我而言)最明显的方法是写入受保护的内存位置,如下所示: System.Runtime.InteropServices.Marshal.WriteInt32(IntPtr.Zero, 0); 正如我所希望 ..
发布时间:2021-11-26 20:08:34 C#/.NET

为什么 sun.misc.Unsafe 存在,在现实世界中如何使用?

前几天我遇到了 sun.misc.Unsafe 包,对它的功能感到惊讶. 当然,这个类是无证的,但我想知道是否有充分的理由使用它.哪些场景可能会出现在您需要使用它的地方?如何在现实世界中使用它? 此外,如果您确实需要它,这不表示您的设计可能有问题吗? 为什么 Java 甚至包含这个类? 解决方案 examples 虚拟机“内在化".即无锁哈希表中使用的CAS(Com ..
发布时间:2021-11-25 21:00:22 Java Web开发

如何在 Java 中使用指针?

我知道 Java 没有指针,但我听说 Java 程序可以用指针创建,而且这可以由少数 Java 专家来完成.是真的吗? 解决方案 Java 中的所有对象都是引用,您可以像使用指针一样使用它们. 抽象类动物{...}类狮子扩展动物{...}类 Tiger 扩展了 Animal{公共老虎(){...}公共无效咆哮(){...}}虎先=空;老虎第二 = 新老虎();老虎第三; 取消引用空值: ..
发布时间:2021-11-25 18:04:14 Java Web开发

允许字符串大于 20 亿个字符的 C# StringBuilder 版本

在 C# 中,64 位 Windows + .NET 4.5(或更高版本) + 在 App.config 文件中启用 gcAllowVeryLargeObjects 允许大于 2 GB 的对象.这很酷,但不幸的是,C# 允许在字符数组中的最大元素数仍然是 限制为大约 2^31 = 21.5 亿个字符.测试证实了这一点. 为了克服这个问题,微软 建议在选项 B 中本地创建数组(他们的“选项 C ..
发布时间:2021-11-25 07:45:37 C#

即使在 project.json 中将 allowunsafe 标志设置为 true 后,.NET Core 中的不安全代码编译错误

我在我的 .NET Core 应用程序中使用了一些不安全的代码.为此,我在 project.json 文件中进行了此更改: “compilationOptions":{“allowUnsafe":真,} 但是,我仍然收到错误 CS0227:只有在使用/unsafe 编译时才会出现不安全的代码. 我已经经历过这个: 不安全的代码不会在 Visual Studio 2015 上编译 ..
发布时间:2021-11-24 15:16:42 C#

C# 不安全值类型数组到字节数组的转换

我使用扩展方法将浮点数组转换为字节数组: public static unsafe byte[] ToByteArray(this float[] floatArray, int count){int arrayLength = floatArray.Length >数数 ?计数:floatArray.Length;byte[] byteArray = new byte[4 * arrayLen ..
发布时间:2021-11-18 02:29:39 其他开发

暂时将 [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 其他开发

Windows Phone 8(WP8) C# 不安全代码?

编辑:您可以使用不安全的代码...您只需要手动编辑项目文件. 当我可以在手机上使用本机 C++ 代码时,为什么或为什么 WP8 上的 C# 不支持不安全代码(我没想到会这样)?我的意思是说来吧,我对微软试图强迫 C# 的做法感到非常失望. 是否有任何 MS 计划在未来在 WP8 上支持此功能?我将着色器常量从 C# 传递到 C++ 并使用不安全的代码来优化此过程,但在 WP8 上,与 ..
发布时间:2021-09-26 20:33:10 其他开发

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

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

错误 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 其他开发

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

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

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 其他开发

在安全的 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 其他开发

使用 unsafe 将透明度写入位图并保留原始颜色?

在这段代码中,我创建了透明位图,但将列表测试点中的像素着色为黄色.我怎样才能让它保持透明但像素要着色或保持它们的原始颜色而不是黄色? private void button2_Click(object sender, EventArgs e){图形 g;g = Graphics.FromImage(bmpBackClouds);g.Clear(颜色.透明);g.Dispose();BitmapD ..
发布时间:2021-09-09 19:26:58 其他开发

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

考虑以下事项: //只是一系列相同类型的相邻字段#[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 其他开发

别名可变原始指针 (*mut T) 会导致未定义的行为吗?

&mut T 和 &mut T 导致编译错误;太好了,两次可变借用客观上是错误的. *mut T 和*mut T 是未定义的行为还是完全有效?也就是说,可变指针别名是否有效? 更糟糕的是 &mut T 和 *mut T 实际上编译并按预期工作,我可以通过引用修改一个值,指针,然后再次引用......但我看到有人说这是未定义的行为.是的,“有人这么说"是我掌握的唯一信息. 这是我测 ..
发布时间:2021-07-13 21:17:45 其他开发