8得票2回答
在不安全代码中,将指针赋值为null和0之间有什么区别吗?

这可能看起来很奇怪,但在C语言中,(size_t)(void*)0 == 0不能被语言规范保证。编译器允许使用任何值作为null(尽管它们几乎总是使用0)。 在C#中,您可以在不安全代码中将null或(T*)0分配给指针。 有什么区别吗? (long)(void*)0 == 0是否保证?...

7得票1回答
我应该将安全代码和不安全代码混合吗?

我正在处理一个使用大量WIN32 API调用并需要一些不安全代码的项目。从最佳实践的角度来看,我应该将这些代码隔离到自己的DLL中,并使用/unsafe开关进行编译,同时保持我的主应用程序的安全性吗? 换句话说,是否有任何理由不使用/unsafe开关编译项目?是否存在潜在风险?

11得票3回答
如何在 VB.Net 中使用不安全代码?

我想知道以下C#代码的VB.NET等效代码: unsafe { byte* pStart = (byte*)(void*)writeableBitmap.BackBuffer; int nL = writeableBitmap.BackBuffer...

46得票6回答
C#中的'unsafe'函数 — *(float*)(&result)与(float)(result)之间的区别

有人能简单地解释一下以下代码吗: public unsafe static float sample(){ int result = 154 + (153 << 8) + (25 << 16) + (64 << 24); ...

9得票1回答
为什么在不安全的代码段中禁用await?

根据http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/async-await-faq.aspx,在unsafe块中禁止使用await关键字,只提到了“保留非托管指针固有的困难”。是否有关于这些困难的良好解释?

13得票1回答
mem::forget(mem::uninitialized())是否是定义良好的行为?

在 mutagen 中,我正在对代码进行各种变异。其中一个我想要变异的模式是 if let Ok(x) = y { .. }。然而,这带来了相当大的挑战,因为我无法知道 y 的类型 - 用户可能已经构建了自己的枚举,其中包含一个一元的 Ok 变体。对于实际上具有实现 Default 的错误类型...

7得票2回答
Marshal.PtrToStringUni()与new String()有何区别?

假设我有一个指向Unicode字符串的char*指针,并且我知道它的长度: char* _unmanagedStr; int _unmanagedStrLength; 我有两种方法将它转换为.NET字符串: Marshal.PtrToStringUni((IntPtr)_unmanag...

7得票6回答
Unity3D不安全的代码需要指定“unsafe”命令行选项

我正在使用 Unity3D 4.3 并调用我创建的一个 DLL。 当尝试调用它唯一的函数时,代码如下: void GetModelReferences(int &nVertices, float * vertices, int &nTriangles, int * trian...

9得票3回答
为什么在迭代器环境中不能使用unsafe关键字?

在阅读Jon的精彩回答“如何使用迭代器反向读取文本文件”时,我发现有一个类似的问题,我在那个问题中使用了指针来解决,“.net是否有一种方式可以从底部向上读取文本文件”,但在关闭之前...。 现在我尝试使用指针来解决这个问题,好吧,它看起来很hackish并且边缘有点粗糙... publ...

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

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