-1

我创建了一个类对象的指针,当我尝试使用指针创建一个新对象时,它会出现段错误。为什么会这样?

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);
4

4 回答 4

1

我在您的代码中找不到任何与段错误相关的问题。

但是我对为什么您的区分大小写不匹配感到困惑:
该课程称为“士兵”,而士兵**称为“士兵”。

但是你写:

level.soldier = new soldier* [level.SoldierCount];

和:

level.Soldier[i] = new Soldier(initX, initY, initDirection, steps);

如果代码真的像你写的那样编译,这可能就是问题所在。

于 2009-01-28T13:21:56.787 回答
1

使用空Soldier构造函数,您的代码可以正常工作(除了更正的拼写错误,例如小写level.soldier[]

请发布构造函数正文。

于 2009-01-28T13:23:24.007 回答
1

可能i >= level.SoldierCount吗?

于 2009-01-28T13:26:22.333 回答
0

的价值是level.SoldierCount多少?什么是价值i

发生段错误的唯一方法是访问未分配的内存。在您突出显示的行中,唯一可能发生的位置是在数组中(或在构造函数中,您没有为其发布代码)。最有可能的是,您正在越界访问数组。

于 2009-01-28T13:25:14.050 回答