int length; 
BYTE* values = (BYTE*)&length + sizeof(length); 这段怎解?

解决方案 »

  1.   


    int length; 
    BYTE* values = (BYTE*)&length + sizeof(length);// sizeof(length)实际就是sizeof(int);
    //&length获取了length的首地址,然后将其转换为BYTE类型。
    //实际上value指针就直接到了length在内存中的末尾,他俩紧挨着了
      

  2.   

    应该是将length最后一比特的地址给了values
      

  3.   

    如果是在WINDOWS VC 下:
    values 则为在“length”变量前面声明的一个变量;
    特别地:如果你的“length”是在一个函数的开头处声明的,则values实际上指向的是调用该函数的函数的堆栈的栈基址。
      

  4.   

    引用1:int length; 
    BYTE* values = (BYTE*)&length + sizeof(length);// sizeof(length)实际就是sizeof(int);
    //&length获取了length的首地址,然后将其转换为BYTE类型。
    //实际上value指针就直接到了length在内存中的末尾,他俩紧挨着了
    引用2:如果是在WINDOWS VC 下:
    values 则为在“length”变量前面声明的一个变量;
    特别地:如果你的“length”是在一个函数的开头处声明的,则values实际上指向的是调用该函数的函数的堆栈的栈基址。
    一个版本说values在length后,一个版本说values在length前,那个才是正确啊?
      

  5.   

    类似于这个
    struct DATA
    {
        int length;
        BYTE value[0];
    }DATA * = (DATA *)malloc(100);
    DATA->length = 100;DATA->value指向的length地址之后
      

  6.   

    length 变量紧接着的地址 调试看看内存就知道了