数组中的元素无意中发生了变化

时间:2017-06-23 11:19:39

标签: c++ arrays

所以我有两个数组,它们可以控制玩家的x,y和z坐标,但是每当我调用它们时,他们会在第一次打印到控制台时更改它们的值,它们会显示正确的结果,但随后会打印到屏幕上产量非常小,

HisPosition = GetPlayerPosition(aPlayer);
std::cout << "TheirPos=" << std::dec << HisPosition[0] << std::endl;
std::cout << "TheirPos1=" << std::dec << HisPosition[0] << std::endl;

if(!isnan(HisPosition[0])){
    std::cout << "TheirPos2=" << std::dec << HisPosition[0] << std::endl;

控制台输出示例:

TheirPos=440
TheirPos1=1.7118e-037
TheirPos2=1.7118e-037

它们的定义如下:

float* HisPosition;

和GetPlayerPosition:

float* GetPlayerPosition(DWORD dwBase)
{
    float result [3];
    DWORD aXPos = dwBase + 0x134;
    DWORD aYPos = dwBase + 0x138;
    DWORD aZPos = dwBase + 0x13C;

    result[0] = Read<float>(aXPos);
    result[1] = Read<float>(aYPos);
    result[2] = Read<float>(aZPos);

    return result;
}

aPlayer代表播放器内存中的地址我试图获取偏移是正确的,因为在第一个控制台打印位置是正确的。

我很擅长在C ++中使用数组,并希望得到任何指导。

1 个答案:

答案 0 :(得分:1)

return result;向本地堆栈分配的数组返回dangling pointer,当超出范围时,该数组会消失。