26得票4回答
byte[]的最大长度是多少?

我正在尝试创建一个长度为UInt32.MaxValue的byte数组。这个数组本质上是一个小型的内存数据库:byte[] countryCodes = new byte[UInt32.MaxValue]; 然而在我的电脑上,运行时我遇到了一个 "Arithmetic operation res...

26得票5回答
为什么*(int*)0=0不会引起访问冲突?

出于教育目的,我正在编写一组方法,使C#中产生运行时异常,以了解所有异常及其原因。目前,我正在尝试导致 AccessViolationException 异常的程序。 在我看来,最明显的方法是写入受保护的内存位置,如下所示:System.Runtime.InteropServices.Mar...

25得票2回答
在将allowunsafe标志设置为true后,在.NET Core中编译不安全代码仍出现错误

我在我的.NET Core应用程序中使用一些不安全的代码。为此,我对project.json文件进行了如下更改: "compilationOptions": { "allowUnsafe": true, } 然而,我仍然得到错误信息 CS0227: Unsafe code may...

25得票10回答
哪个更快 - C#的不安全代码还是纯粹的C++?

我正在编写一个图像处理程序,用于实时处理视频帧。这是使用Emgu.CV库(C#)封装OpenCV库dll(非托管C++)的C#代码。现在我必须编写自己的特殊算法,并且它需要尽可能快。 哪种方式实现算法速度更快? 在C#中编写“unsafe”函数 将该函数添加到OpenCV库中,并通过Em...

25得票3回答
使用不安全的代码有哪些影响?

除了代码本身可以直接访问内存之外,使用 "/unsafe" 编译器标志和 "fixed" 关键字还有其他意义吗?与代码签名和部署 .exe 相关的任何连锁反应吗?(我的应用程序仅限桌面) (这不是关于我是否应该这样做的问题,"why"已在我的问题这里中涵盖)

24得票4回答
Java中的"内部地址"是什么?

在Object.hashCode()的Javadoc中,它声明: 尽可能合理地说,由类 Object 定义的hashCode方法确实为不同的对象返回不同的整数。(通常通过将对象内部地址转换为整数来实现此功能,但Java™编程语言不要求使用此实现技术。) 这是一个常见的误解,认为hash...

23得票3回答
为什么固定大小的缓冲区只能是基本类型?

我们需要经常与本地代码进行互操作,在这种情况下,使用不需要编组的非安全结构体会快得多。但是,当结构包含非原始类型的固定大小缓冲区时,我们无法这样做。 为什么C#编译器要求固定大小的缓冲区只能是原始类型?为什么不能将固定大小的缓冲区设置为结构体,例如:[StructLayout(LayoutKi...

22得票5回答
如何在C#中显示指针地址?

自从我开始使用C#编程以来,我就没有使用过指针 - 而我的C++时代已经很久远了。我想我应该刷新一下我的知识,并且只是因为这里的另一个问题而玩弄它们。我都能理解它们,但我无法弄清楚如何将指针地址写入控制台...char c = 'c'; char d = 'd'; char e = 'e'; ...

22得票1回答
使用不安全代码进行 C# 位图图像掩码处理

我正在使用以下代码在C#中创建图像蒙版:for(int x = 0; x < width; x++) { for(int y = 0; y < height; y++) { bmp.SetPixel(x,y,Color.White); } }...

21得票1回答
unsafeDupablePerformIO和accursedUnutterablePerformIO有什么区别?

我在 Haskell 图书馆的受限区域里徘徊,发现了这两个邪恶的咒语:{- System.IO.Unsafe -} unsafeDupablePerformIO :: IO a -> a unsafeDupablePerformIO (IO m) = case runRW# m of ...