无法访问内存地址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;
还有一些线我不确定。谢谢你的帮助。
答
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
这是不够的上下文来帮助你。你有没有试过在调试器中把它拉起来并环顾四周?这些指针的值和“i”的值是什么?另外,任何你不使用'playerNames [i] = players [i] .name'作为语法的理由? – templatetypedef 2012-02-13 03:34:32