c - 如何为c中的结构数组malloc

Hop*_*r06 -1 c arrays malloc struct

我一直在寻找一种方法来自己做这件事,但我还没有找到与我的情况完全匹配的情况,而且我的经验不足,无法从类似情况中得出该怎么做。所以我希望在我的具体情况下得到一些帮助。

我有一个结构体,我需要创建 3 个它们的数组。但是当我使用 [] 分配内存时,内存不足。所以我想我需要使用malloc;但我不知道该怎么做。这是我的代码:

struct key {

char symbol[10];
int quantity;
char GroupID[10];

};  
Run Code Online (Sandbox Code Playgroud)

然后在主要我有:

struct key PrevKeys= malloc(345000*sizeof(struct key));
struct key ActivityKeys= malloc(345000*sizeof(struct key));
struct key CurKeys= malloc(345000*sizeof(struct key));
Run Code Online (Sandbox Code Playgroud)

但是我不断从编译器中收到“无效的初始值设定项”错误。

早些时候我试过这个,它编译得很好,但是当我运行它时给了我一个段错误(我假设是因为堆栈中没有足够的内存):

 struct key PrevKeys[345000];
 struct key ActivityKeys[345000];
 struct key Curkeys[345000];
Run Code Online (Sandbox Code Playgroud)

关于如何分配这 3 个结构数组的任何想法都将非常非常感谢。

gna*_*729 5

struct key* PrevKeys= malloc(345000*sizeof(struct key));
struct key* ActivityKeys= malloc(345000*sizeof(struct key));
struct key* CurKeys= malloc(345000*sizeof(struct key));
Run Code Online (Sandbox Code Playgroud)

  • @EdBayates 不,不要投射 [`malloc()`](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) (3认同)
  • 更好的是`struct key *PrevKeys = malloc(345000 * sizeof *PrevKeys);` (3认同)