C++读取向量的访问冲突

Fla*_*ave 3 c++ exception access-violation visual-studio

当我试图使用vector [int_number]并且我的程序停止工作时,我得到一个例外.

            uint64_t data = 0xffeeddccbbaa5577;
            uint16_t *vector = (uint16_t*) data;

            int currentPosition = 0;

            while (currentPosition <= 3) {

            uint16_t header = vector[currentPosition]; // problem here
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2017返回我:抛出未处理的异常:读取访问冲突.向量是0x6111F12.

我卡在这里.如果你知道我应该做什么,我将不胜感激.提前致谢!

Bat*_*eba 5

抛开由于严格的混叠违规而导致的所有未定义行为,在当前的Intel芯片和MSVC运行时,所有指针都是48位.

所以,0xffeeddccbbaa5577从来没有一个有效的指针值.

因此,取消引用该值的行为将是未定义的.

如果你想分手data,到合适的类型的四个要素,再一个方法是创建一个uint16_t foo[4]发言权,并memcpy开始在数据&datafoo.