我创建了一个类对象的指针指向,当我尝试使用指针创建一个新对象时,它会发生段错误。为什么会这样?
struct Level
{
int SoldierCount;
Soldier **soldier;
int taskCount;
int *taskPercentage;
int *taskBitmapX;
int *taskBitmapY;
}level;
void createMap()
{
//Input and Declartion of various variabls goes here
level.soldier = new Soldier* [level.SoldierCount];
//Seg Faults Here
level.Soldier[i] = new Soldier(initX, initY, initDirection, steps);
}
士兵类构造函数:
Soldier(int, int, int, int);
答案 0 :(得分:2)
我在代码中找不到任何与段错误相关的问题。
但我很困惑为什么你的区分大小写不匹配:
该课程称为“士兵”,士兵**称为“士兵”。
但你写道:
level.soldier = new soldier* [level.SoldierCount];
和
level.Soldier[i] = new Soldier(initX, initY, initDirection, steps);
如果代码在您编写代码时确实编译,则可能是问题所在。
答案 1 :(得分:2)
使用空Soldier
构造函数,您的代码可以正常工作(更正的拼写错误除外,如小写level.soldier[]
)
请发布构造函数体。
答案 2 :(得分:1)
可能是i >= level.SoldierCount
?
答案 3 :(得分:0)
level.SoldierCount
的价值是多少?
i
发生段错误的唯一方法是访问未分配的内存。在您突出显示的行中,唯一可能发生的地方是数组(或构造函数内部,您没有发布代码)。最有可能的是,你正在越过边界访问数组。