在内存级

时间:2017-05-26 22:14:01

标签: c++

我有一个向量aVector。它从一些内存地址开始,在这种情况下为0x00cff87f

我还有一个双D

现在,当程序访问上面的D时,它当然会访问其他地址。

我需要的是当程序访问上面的D时,指向地址0x00cff87f,该数组的开头,并将第一个sizeof(double)字节作为double。

我尝试将指向D的指针传递给一个函数并切换它,但是只是改变了指针指向的位置,一旦我退出函数,D保持不变。

基本上,我需要一些方法来告诉程序,从0x00cff87f开始的四个字节的内存是双倍的,当我要求一个名为D的双精度来获取该地址的数字时

我在内存中有一个数组需要分解为基本类型,但不是不必要地复制所有内容,我宁愿告诉程序它已经存在的位置。

我该怎么做?

修改

我有一个无符号字符向量,我想读入其他类型。 C#BinaryReader可以使用MemoryStream做的事情。我不知道如何在c ++中做到这一点。只有fstreams,没有一个处理已存在于内存中的(二进制)文件。

1 个答案:

答案 0 :(得分:1)

double *p = (double *) &aVector;

我不确定你为什么要这样做,但似乎很有可能有更好的方法来做你想要做的事情,因为打破类型安全和直接访问内存会导致很多怪异问题。