有办法知道C#中一个字符串在内存中的地址么?
如果可以的话我想读出一定长度的字节
请问应该怎么做??

解决方案 »

  1.   

    楼上的高人能说具体点么1.怎样得到这个string在内存中的地址
    2.知道地址之后怎样把内存中的内容读取到一个数组里面谢谢先~
      

  2.   

    据说是可以的,但决不是通过MemoryStream
      

  3.   

    用unsafe关键字,就可以操作指针。通过指针的取址操作符,就可以获取一个变量的地址,然后显示就可以了。不过有用吗?
      

  4.   

    fixed(char* pc = new string('a', 2))
    {
    byte* ppc;
    ppc = (byte*)pc;
    ppc -= 20;
    for(int i = 0; i < 40; i++)
    {
    Console.WriteLine(*ppc++);
    }
    }
    别忘了函数签名加unsafe
    string结构有两个private field,一个指示字符数目,可以用reflection获取信息
      

  5.   

    楼上的方法可行。
    另外,托管的代码也是受控的,所以托管堆上的代码事实上也是可以通过指针调用来访问地址的,只不过MS封装了这些功能模块并以GABAGE机制来自动管理而已。