unsafe

    1热度

    1回答

    我正在研究基于内存映射文件的基于非.Net应用程序的IPC数据交换。因此,我想了解C#如何为此组织物理数据布局。所以我从我读过的那些不安全的结构开始,这似乎是正确的技术。当具有不同的数据布局演奏为布尔型值我感到困惑的这个代码和对结果: using System; using System.Reflection; using System.Runtime.CompilerServices; u

    0热度

    1回答

    这是情景: 我已经实例化一个类的字符串,然后我已获得了其在HEAP: public class UnsafeExperiment { static String s = "ciao"; public UnsafeExperiment() throws Exception { Unsafe unsafe = getUnsafeInstance(); F

    2热度

    1回答

    []byte转换到string的优选方式是这样的: var b []byte // fill b s := string(b) 在此代码字节切片被复制,它可以是在情况下的一个问题,其中的性能是重要的。 当性能是至关重要的,可以考虑进行不安全的转换: var b []byte // fill b s := *(*string)(unsafe.Pointer(&b)) 我的问题是:什么

    4热度

    2回答

    我有[u8; 16384]和u16。我将如何“暂时转换”阵列,以便我可以一次设置两个u8,第一个到最低有效字节,第二个到最高有效字节?

    2热度

    1回答

    对不起,这个令人困惑的标题,但我想不出一个更好的方式来解释它。 在浏览的BitConverterthe source code最近,我遇到的代码奇怪段传来: public static unsafe int ToInt32(byte[] value, int startIndex) { fixed (byte* pbyte = &value[startIndex]) {

    1热度

    1回答

    我发现几乎所有高级同步抽象(如Semaphore,CountDownLatch,来自java.util.concurrent的Exchanger)和并发集合都使用Unsafe(比如compareAndSwapInt方法)中的方法来定义临界区。同时,我预计同步块或方法将用于此目的。 你能解释一下,不安全的方法(我的意思是只能自动设置一个值的方法)比同步更有效率,它为什么如此?

    0热度

    2回答

    众所周知,.NET中的类通过引用传递,并以价值为结果。 在不安全的代码中,可以使用指向结构的指针,但不能指向类,因为它们被GC移动。例如,当您有一个指向数组的指针时,您必须将其放入fixed语句(如果您在堆中分配)或stackalloc(要分配到堆栈上)。 就这样说,如果类被GC移动了,怎么可能通过引用来传递类呢?

    1热度

    1回答

    有问题我试图模拟一个任务,这个任务是一个结构数组popular, ...不安全以获得尽可能多的吞吐量可以达到。 问题是,当我打电话给fucntion和结果 显示不同的字符,但在GetSomeTs()的范围内,这很好。 所以就在返回之前,我测试其中一个元素并打印出正确的值。 这是测试结构。 public unsafe struct T1 { public char* block = st

    0热度

    1回答

    我不能声明一个指向我自己的类对象的指针变量吗? static void Main() { MyClass myClass = new MyClass(); unsafe { fixed (MyClass* pMyClass = &myClass) { /// Do Somthing here with pMyClass.. } }

    -1热度

    1回答

    我有一个类DAG,它扩展了另一个类ARCO。当我编译它,及时报告此警告在两行: 注:\ ARCO.java使用未经检查或不安全的操作 重新编译-Xlint:未经检查的详细信息 问题是什么? (类阿科犯规包含错误)