定义了两个数组 
static  float*[] ptrA =new float*[500000];
 static float[] D = new float[500000];//系数值
其中 ptrA中存的是D的地址,请问 d的地址能变化吗?分配时用
                             fixed (float* blacktemp = &D[0])
                             {
                                 ptrA[innumindex[m] + rowindex] = blacktemp;
                             }我调试的时候发现 blacktemp 中的地址值 和 &D 是不一样的

解决方案 »

  1.   

    没办法,还是寻地址速度比较快,我的程序数据量比较大,调度数据比较频繁。我试过不用指针cpu符合很大的
      

  2.   

    那你为什么还要用C#,要论效率的话,C/C++要更高一些。
      

  3.   

    C#最好不要用指针,static float[] D = new float[500000];//系数值
    托管类定义,动态分配地址,你这样不行。
      

  4.   

    &D 指的是float 数组的地址
    blacktemp 是 D 的第一个元素的地址 ,.net 的数组地址 和 数组内部数据的地址 并不一致
      

  5.   

    解决什么?
     .net 不是 c++ ,c++ 数组一段连续的内存,.net 数组是Array类
    具体 可以反汇编一下array,看看array具体实现
      

  6.   

    数组地址不行,你可以试试第一个元素的地址+ 偏移量,具体还要看array的实现
      

  7.   

    static float[] D = null;调用时动态分配
      

  8.   

    C#中的对象存在的地址本来就不会固定,你要是不能摆脱这个C++中的习惯的话,在C#中寸步难行。
      

  9.   


    让我非常纳闷的是,另一个变量也是float数组,他的地址是固定的,而这一个就是有时候变化
      

  10.   

    让我非常纳闷的是,另一个变量也是float数组,他的地址是固定的,而这一个就是有时候变化
    ---------------------------------------------
    fixed会在执行期间“钉住”该变量。
      

  11.   

    我也用fixed了,在调用该变量地址时用fixed盯住,不知道用的对不对