use*_*938 6 c segmentation-fault
我有一个名为Game的结构,其中包含一系列级别,定义如下:
typedef struct
{
Level levels[x];
} Game;
Run Code Online (Sandbox Code Playgroud)
当我编译代码时,如果x是1,2或3,程序运行正常.如果它是任何其他值(例如4),我会得到分段错误.我不是在任何地方访问阵列.Main就是这样的东西(除了初始化之外的一切评论):
int main (...)
{
Game g;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这可能是什么的任何线索?
提前致谢.
如果Level类/ struct非常大,你可以试试这个:
typedef struct {
Level *levels;
} Game;
Run Code Online (Sandbox Code Playgroud)
然后使用malloc()或new分配您的级别.或者如果你真的需要一系列关卡:
typedef struct {
Level* levels[NUM_LEVELS];
} Game;
Run Code Online (Sandbox Code Playgroud)
然后使用以下内容分配级别:
// Allocate levels
int i;
for(i=0;i<NUM_LEVELS;i++) {
gameStruct.levels[i] = (Level*)malloc(sizeof(Level));
initLevelNum(gameStruct.levels[i], i);
}
Run Code Online (Sandbox Code Playgroud)
一个有多大Level?你的堆栈有可能溢出吗?鉴于(显然)无论如何都只有一个 Game 对象,也许您最好使用static存储类,如下所示:static Game g;
编辑:如果您想在堆上强制分配,我建议使用哎呀——错过了它被标记为 C,而不是 C++。std::vector<Level> levels;而不是直接使用指针。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |