unsafe相关内容
我用的IntPtr试验中的“安全”的代码,比较它的东西是如何在“不安全”的方式完成的。 时GCHandleType.Pinned相似?在不安全模式下使用“固定” 的GCHandle pinnedArray = GCHandle.Alloc(字节数组,GCHandleType.Pinned); 的IntPtr指针= pinnedArray.AddrOfPinnedObject();
..
是这样的行为将在C#中是有效的。 公共类MyClass的 { 私人字节[ ]数据; 公共MyClass的() { this.data =新的字节[1024]; } 公共不安全字节*的getData() { 字节*结果= NULL; 固定(字节* dataPtr =数据) { 结果= dataPtr; } 返回结果; } } 解决方案 如果你要关闭安全
..
我在做一个声音合成程序至极,用户可以创建自己的声音做节点基合成,创造振荡器,滤波器等... 所述程序编译节点到中间语言至极然后经由的ILGenerator和DynamicMethod的 转换到一个MSIL 它与在至极阵列的所有操作和数据存储,但它会更快,如果我能够使用指针,让我以后做一些位级操作 PD:速度是非常重要的! 我注意到一个DynamicMethod的构造器覆盖
..
我试图写一些代码,将方便处理视频帧。我收到的帧作为 System.Windows.Media.Imaging.WriteableBitmap 。出于测试目的,我只是运用简单的阈值过滤,将处理BGRA格式的图像,并指定每个像素的基础上平均的BGR像素要么是黑色或白色。 下面是我的“安全”的版本: 公共静态无效在applyFilter(WriteableBitmap的位图,字节阈值) {
..
我正在使用一堆WIN32 API调用和需要一些不安全的代码的项目。从最佳实践的角度来看,我应该隔离在其自己的DLL的代码与/不安全编译开关,同时保持我的主应用程序安全吗? 要换个说法。有什么理由不编译与/不安全开关项目?是否有任何潜在的风险? 解决方案 组件时定义的最小单位独立进行版本控制,在.NET可再发行代码。因此,我会问自己的第一个问题是:“我是永远会想使不安全的代码的新版本,
..
我不习惯的指针的代码(例如C ++),也没有与不安全的岛屿:只有“安全”的C#。 现在我想实现对于.NET Micro Framework的,那里的紧凑性和性能是非常重要的在C#中的函数。 基本上,我会收集短裤4普莱斯,从而填补了缓冲(如字节数组)。 假设每个样本是这样的: 结构MYSTRUCT { 公共短AN1 ; 公共短AN2; 公共短AN3; 公共短AN4; }
..
今天我创建了一个类库在Visual Studio 2015年新的类库(包)模板,显然,它使用了花哨的新项目格式,在ASP.NET xproj ,用于建立包。虽然这由我很好,我怎么叫从库不安全的代码?我看着项目>属性>生成,其中选项切换不安全的代码是应该的,但我得到的是这样的: 所以,是的,没有这样的运气。我甚至尝试粘贴“< AllowUnsafeBlocks>真< / Al
..
有关教育目的,我写了一组在C#中导致运行时异常,以了解所有的例外是和什么原因导致它们的方法。现在,我正与能够引起 AccessViolationException 。 最明显的方法(对我来说)修补程序要做到这一点是写一个受保护的内存位置,如: System.Runtime.InteropServices.Marshal.WriteInt32(IntPtr的.Zero,0);
..
为什么我收到以下错误? 不安全的代码只能出现如果与/不安全编译“? 我在C#和Visual Studio 2008的工作在Windows&NBSP编程。CE 解决方案 要使用不安全的代码块,该项目必须与在/不安全的开关进行编译。 打开项目的属性,去在构建标签,检查允许不安全的代码复选框。
..
看一看下面的代码: 静态无效的主要(字串[] args) { 字符串s = NULL; 的String [] myArray的=新的字符串[1]; {} //做邪恶的东西在这里 如果(s.GetType()== typeof运算(INT)) { Console.WriteLine (“这是不应该的!”); } 到Console.ReadLine(); }
..
我理解指针和罕见的需要在C#代码中使用它们。我的问题是:什么是具有在一个代码块明确说明“不安全”的理由。另外,为什么一定编译器选项更改为允许“不安全”代码 底线:什么在CLR(或语言规范)使得它,所以我们不能只使用指针,每当我们想要的(就像C和C ++),而不必键入“不安全”,改变了编译器选项? 对于澄清:我知道什么是“不安全”和“安全”的代码。这只是一个我们为什么必须做的所有额外的工
..
..
我试图让使用一些固定字段不安全结构的字段类型。固定域的FieldType不返回的实际类型。 [StructLayout(LayoutKind.Sequential,包= 1)] 酒店的公共不安全结构MYSTRUCT { 公共UInt32的字段1; 公共固定为sbyte字段2 [10]; 公共UINT64字段3; } 无效测试() { 变种theStruct =新MYST
..
什么是不安全的代码的局限性,在C#中?例如,我可以做几乎任意的指针类型转换和算术,好像我是用C或C ++? 解决方案 是的。的所有的赌注都关闭不安全时,在播放 这是背后的想法”不安全“ - 即”可核实的各类安全“被删除,你可以从一个类型的指针转换为另一种类型的指针不运行时保持你的搬起石头砸自己的脚,如果你愿意的话 - 就像C或C ++ 下面是使用不同的例子指针类型在C#
..
在回答自己的争议问题,的 已经说明,你不需要醪”不安全“的关键字直接读取和写入任何.NET对象实例的字节。你可以声明以下类型: [StructLayout(LayoutKind.Explicit) 结构MemoryAccess { [FieldOffset(0)] 公共对象的对象; [FieldOffset(0)] 公共TopBytes字节; } 类TopB
..
我想知道VB.NET相当于下面的C#代码: 不安全 $ { b $ b字节* PSTART =(BYTE *)(无效*)writeableBitmap.BackBuffer; INT NL = writeableBitmap.BackBufferStride; 为(INT R = 0; R< 16; R ++) { 为(INT G = 0; G< 16; G ++)
..
我一直在试图确定哪些使用C#中的固定语句包含固定阵列管理不安全结构的真实成本。请注意,我不是指非托管结构。 具体而言,没有任何理由,以避免“MultipleFixed”下方所示类的格局?是简单的固定数据非零成本,接近零(==成本类似于设置,以及输入/出固定范围时,清除一个标志),或者是不够显著,以避免可能的时候? 显然,这些类是人为的,以帮助解释的问题。这是在XNA游戏高使用率的数据结
..
我已经做了研究公平一点,但现在我坚持,为什么我仍然收到此错误。我有一个结构具有以下属性: 帐户结构 { //私有属性 私人双mBalance; 私人诠释mAccountNumber; 私人字符串MNAME; 私人字符串mDateCreated; } 和我试图做到以下几点:类BankManager { //私有属性 私人不安全账户* mA
..
我明白不安全code是比较合适的访问之类的东西在Windows API并做不安全型铸件比写更高性能code,但我想问问你,如果你有没有注意到任何显著的性能通过使用其实际应用中的改进相比,安全的C#code。 解决方案 有些性能测量 性能优势并不像你想象的那么大。 我做的正常管理数组访问与不安全的指针一些性能测试在C#。 从Visual Studio 2010的外运行构建,.NET 4
..
问题 我移植C应用程序到C#。的C应用程序调用大量来自第三方的DLL函数,所以我写的P / Invoke包装在C#中这些功能。有些C函数分配,我有在C#应用程序使用的数据,所以我用的的IntPtr ,
..