无法访问内存地址C++

问题描述:

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

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

这是不够的上下文来帮助你。你有没有试过在调试器中把它拉起来并环顾四周?这些指针的值和“i”的值是什么?另外,任何你不使用'playerNames [i] = players [i] .name'作为语法的理由? – templatetypedef 2012-02-13 03:34:32

playerNames = new string * [numPlayers]; 

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

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

在这里,你用了阵列指向任何有效的字符串对象的地址解引用。在解引用之前,您必须使每个数组索引指向有效的内存地址。

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

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

+2

最近的回复,但我忘记标记你的答案。谢谢! – 2013-04-04 20:18:10