【发布时间】:2017-12-03 04:46:46
【问题描述】:
我可以只为这个结构分配内存而不为其中的每个单独项目分配内存(在 C 中)吗?
typedef struct _game {
int grid[SIZE][SIZE];
int array[10];
Player player[MAX_PLAYERS];
int currentPlayer;
} game;
这些在单独的头文件中(并且 player 是在与游戏相同的文件中实现的结构):
typedef struct _game *Game;
typedef struct _player *Player;
我只是想知道,当我创建一个游戏的新实例时,我是否需要为游戏中的每个玩家(4 个玩家)分配内存(例如 calloc 或 malloc)?我想,既然我已经在游戏结构中有一个玩家数组(或指向玩家的指针)(并且这个数组大小没有改变),那么我只需要为游戏结构本身分配内存。是这样吗?如何使用内存分配?特别是它如何与结构一起使用?我是否也需要为结构中的所有其他项目分配内存?
【问题讨论】:
-
您还需要为播放器分配内存。看到这个:stackoverflow.com/questions/2278933/…
-
为什么不显示分配代码的示例?另请注意,将指针隐藏在
typedef后面通常是一种糟糕的做法。 -
@DavidBowling 只是出于兴趣,为什么它被认为是不好的做法?而我应该怎么做呢?
-
您可以查看我的答案中提供的阅读列表,以了解为什么您不应该键入定义指针。长话短说,当我们想将它与
const限定符一起使用时,这是很成问题的。
标签: c memory memory-management struct