C# 中从 void* 到对象的转换
在 C# 项目中,我需要通过将引用放入结构中来传递对象参数。 即我有一个结构传递给调度程序 struct SOMESTRUCT { public int lpObject } ,其中 lpObj…
从 C# 调用 AuditQuerySystemPolicy() (advapi32.dll) 返回“参数不正确”
顺序如下: 使用 LsaOpenPolicy()(未显示) 调用 LsaQueryInformationPolicy() 获取类别数量; 对于每个类别: 调用AuditLookupCategoryGuidFromCate…
为什么必须将固定大小的缓冲区(数组)声明为不安全?
假设我想要一个 7 字节(或 3 或 777)的值类型。 我可以这样定义它: public struct Buffer71 { public byte b0 public byte b1 public byte b2 publ…
0 - 65535 之间第一个内存地址的空引用
我想更多地了解内存,但我无法从谷歌找到它,如果这是一个愚蠢的问题,请原谅我。 为什么下面的代码,在C#中访问内存地址0(最多65535)会抛出NullRef…
无法将指针数组放入 C# 中的不安全结构中的根本原因是什么?
如果可以像在 C 中那样将指向子结构的指针数组放入 C# 中的不安全结构中,那么构造复杂的数据结构而不需要每个节点有一个对象的开销会容易得多,而且…
在不安全代码中分配给指针时,null 和 0 有什么区别吗?
这可能看起来很奇怪,但在 C 中 (size_t)(void*)0 == 0 并不受语言规范的保证。编译器可以使用任何他们想要的 null 值(尽管它们几乎总是使用 0)。 …
为什么我的不安全代码块比我的安全代码慢?
我正在尝试编写一些可以方便地处理视频帧的代码。我以 System.Windows.Media.Imaging.WriteableBitmap 形式接收帧。出于测试目的,我仅应用一个简单的…
我能让 C# 的性能接近 C++ 的性能吗?用于小型密集任务?
我在想 C++ 与 C# 的速度差异主要是 C# 编译为由 JIT 编译器接收的字节码(正确吗?)以及 C# 所做的所有检查。 我注意到可以在编译选项中关闭其中许…
在 C# 中创建子数组引用(使用 unsafe ?)
我正在重构我们当前使用的库,并且面临以下问题。 我们曾经有以下内容: class Blah { float[][] data public float[] GetDataReference(int index) {…
将 C# void* 转换为 byte[]
在 C# 中,我需要将 T[] 写入流,最好没有任何额外的缓冲区。我有一个动态代码,可以将 T[] (其中 T 是无对象结构)转换为 void* 并将其修复在内存中…
检索 UIImage 的像素 alpha 值 (MonoTouch)
这个问题与 1042830 重复,但特定于 MonoTouch 。有没有一种方法比分配 IntPtr、使用 CGBitmapContext 绘制到其中然后在适当的偏移处读取字节更安全?…
C# 巨大的 2 维数组
我需要在 C# WinForms 中声明连续超过 20000 个项目的方阵。 我读到 32 位中 2GB .Net 对象大小限制,以及 64 位操作系统中的相同情况。 据我了解,唯…
AccessViolationException,尝试读取或写入受保护的内存
我使用的 dll 包含用于与特定硬件交互的非托管代码,并且我尝试从 C# 使用它,但我不断收到 AccessViolationException。 是什么原因造成的?我该如何…