unsafe相关内容

为什么泛型类型不能有显式布局?

如果尝试使用[(.Explicit)]属性创建泛型结构,则使用该结构会在运行时生成异常: System.TypeLoadException:无法从程序集‘bar’加载类型‘foo’,因为泛型类型不能具有显式布局。 我一直很难找到任何证据证明这一限制的存在。Type.IsExplicitLayout文档强烈暗示它是允许和支持的。有人知道为什么这是不允许的吗?我想不出任何原因,为什么泛型类 ..
发布时间:2022-04-14 10:54:52 C#/.NET

如何使用 C# 获取 char**?

我需要以以下形式将参数传递给不安全的 DllImported 函数: [DllImport("third_party.dll")]private static extern unsafe int start(int argc, char** argv); 我假设它是一个字符串数组.但是,当我尝试执行以下操作时,出现“无法从 string[] 转换为 char**"错误.我该如何让它发挥作用?谢 ..
发布时间:2022-01-12 20:44:23 C#/.NET

为什么我会收到错误“只有在使用/unsafe 编译时才会出现不安全的代码"?

为什么会出现以下错误? 只有使用/unsafe 编译时才会出现不安全的代码? 我使用 C# 和 Visual Studio 2008 在 Windows CE 上进行编程. 解决方案 要使用不安全的代码块,必须在打开/unsafe 开关的情况下编译项目. 打开项目的属性,转到Build 选项卡并选中Allow unsafe code 复选框. ..
发布时间:2022-01-05 19:24:18 C#/.NET

检索 UIImage (MonoTouch) 的像素 alpha 值

此问题与 1042830 重复,但MonoTouch 专用.有没有比分配 IntPtr、使用 CGBitmapContext 绘制到它然后在适当的偏移处读取字节更安全的方法? 解决方案 我不知道回答你自己的问题是否符合犹太教规,但是: protected CGBitmapContext CreateARGBBitmapContext(CGImage inImage){var pixel ..
发布时间:2022-01-05 14:26:05 其他开发

错误 C4996:“ctime":此函数或变量可能不安全

我有一个关于静态源代码分析的大型项目,一切都编译成功,除了一件事.我在标题中提供了错误信息.让我困惑的一点是它给出了一条错误消息,说不安全.我认为这应该只是警告,而不是错误.顺便说一下,我使用的是 Visual Studio 2012.这是我在 ctime 中遇到错误的代码部分.如果有人能帮助我克服这个错误,我会很高兴. void CppCheckExecutor::reportProgress ..
发布时间:2021-12-31 22:31:00 C/C++开发

转换 Vec u32 ;到 Vec u8 ;就地和最小的开销

我正在尝试将 u32 的 Vec 转换为 u8 的 Vec,最好是就地,没有太多的开销. 我当前的解决方案依赖于不安全的代码来重新构建Vec.有没有更好的方法来做到这一点,我的解决方案有哪些风险? 使用 std::mem;使用 std::vec::Vec;fn 主(){让 mut vec32 = vec![1u32, 2];让 vec8;不安全{让长度 = vec32.len() * 4; ..
发布时间:2021-12-31 21:51:37 其他开发

Java 8 不安全:xxxFence() 指令

在 Java 8 中,三个内存屏障指令被添加到 Unsafe 类(source): /*** 确保在栅栏前不会重新排序负载* 在栅栏后装载或储存.*/无效负载栅栏();/*** 确保在栅栏前不会对商店重新排序* 在栅栏后装载或储存.*/void storeFence();/*** 确保在栅栏前不会重新排序负载或存储* 在栅栏后装载或储存.*/void fullFence(); 如果我们用以下方 ..
发布时间:2021-12-28 23:02:09 Java开发

并行处理 vec:如何安全地进行,或者不使用不稳定的功能?

我有一个巨大的向量,我希望能够并行加载/操作,例如在一个线程中加载前十万个索引,然后在另一个线程中加载,依此类推.由于这将是代码中非常热门的部分,因此我提出了以下概念不安全代码证明,以在没有 Arcs 和互斥体的情况下执行此操作: let mut data:Vec= vec![1u32, 2, 3];让头 = data.as_mut_ptr();让 mut 守卫 = (0..3).map(|i| ..
发布时间:2021-12-25 09:37:38 其他开发

删除 C# 不安全指针

我知道在 C# 中使用 /unsafe 标志,你可以使用指针.在 C/C++ 中,要删除指针,您将分别使用 free(pointer); 和 delete pointer; .但是,如何使用 C# 指针实现相同的效果? 解决方案 视情况而定.您使用 free 和 delete 来释放由 malloc 和 new 分配的内存. 但是 通常,如果您执行 PInvoke 调用,则指针 ..
发布时间:2021-12-24 17:12:58 C#/.NET

什么是“内部地址"?在爪哇?

在 Object.hashCode() 说明 在合理可行的范围内,Object 类定义的 hashCode 方法确实为不同的对象返回不同的整数.(这通常是通过将对象的内部地址转换为整数来实现的,但 Java™ 编程语言不需要这种实现技术.) 这是一个常见的误解,这与内存地址有关,但它不会在没有通知的情况下更改,并且 hashCode() 不会也不得更改对象. @Neet 提供了一 ..
发布时间:2021-12-21 09:57:57 Java开发

何时在 C#/.NET 中使用指针?

我知道 C# 使程序员能够在不安全的上下文中访问和使用指针.但是什么时候需要这个? 在什么情况下,使用指针变得不可避免? 仅仅是出于性能原因吗? 此外,为什么 C# 会通过不安全的上下文公开此功能,并从中删除所有托管优势?理论上是否可以在不失去托管环境的任何优势的情况下使用指针? 解决方案 什么时候需要?在什么情况下使用指针变得不可避免? 当托管的安全解决方案的 ..
发布时间:2021-12-13 13:39:48 C#/.NET

如何在 Unity 中使用不安全的上下文

我想在 c# 中使用 c++ 代码 for Unity 使用 CLR.​​ 程序在 unity 之外正常工作,但在引擎内部它给了我一个错误: “cs0227:不安全代码需要指定“不安全"命令行选项" 我真的很困惑,因为该项目在visual studio中成功构建(没有任何错误或警告).我有“允许不安全"按钮已激活. 使用UnityEngine;使用 System.Collectio ..
发布时间:2021-12-11 17:43:04 C#/.NET

如何测试 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开发

如何在 Java 中使用指针?

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

允许字符串大于 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#/.NET

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

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