在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;
有些线路我不确定。谢谢你的帮助。
答案 0 :(得分:4)
playerNames = new string * [numPlayers];
playerNames
指向一个字符串指针数组。这意味着您已将内存分配给可指向字符串对象的指针。到目前为止,该数组已经填充了一些垃圾地址。
*(playerNames+i) = (players+i) -> name;
在这里,您使用out数组取消引用,指向没有有效的字符串对象地址。在解除引用之前,必须使每个数组索引指向有效的内存地址。
for( int i=0; i<numPlayers; ++i )
playerNames[i] = new string();
现在数组中填充了有效的字符串对象地址。