无法在地址c ++处访问内存

时间:2012-02-13 03:29:57

标签: c++

在gdb中,我得到一个“无法访问地址[]的内存”该程序目前正常运行,但我很困惑,为什么我无法正确访问它。

http://hastebin.com/wulomoqimu - main.cpp

http://hastebin.com/hahosuruhe - player.h

这些是,我相信相关文件。

    *(playerNames+i) = (players+i) -> name;
    *(playerCards+i) = (players+i) -> hand;
    *(playerScores+i) = (players+i) -> score;

有些线路我不确定。谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

playerNames = new string * [numPlayers];

playerNames指向一个字符串指针数组。这意味着您已将内存分配给可指向字符串对象的指针。到目前为止,该数组已经填充了一些垃圾地址。

*(playerNames+i) = (players+i) -> name;

在这里,您使用out数组取消引用,指向没有有效的字符串对象地址。在解除引用之前,必须使每个数组索引指向有效的内存地址。

for( int i=0; i<numPlayers; ++i )
    playerNames[i] = new string();

现在数组中填充了有效的字符串对象地址。