你如何使用malloc为结构分配内存?

时间:2015-04-20 16:52:33

标签: c malloc realloc

我的程序的目标是读取文件,并输出具有最大外观的单词以及出现次数。但是我遇到了malloc及其语法问题。 这是malloc引用的结构:

struct Word_setup {
    char word[max_length];
    int count;
};

我的主要部分帮助我发现这是我的错误:

    printf("Pre-Allocation Test");

    struct Word_setup *phrase;

    phrase = (struct Word_setup *) malloc(SIZE);

    if (phrase == NULL)
        {printf("Failure allocating memory"); return 0;}

它似乎只打印出来,Pre-Allocation Test,然后冻结。正如我之前所说,我不清楚如何解决这个问题,但我已经将其隔离了。

*如果您想知道SIZE是什么:

#define SIZE (sizeof(phrase))


修改

对于那些对编译器版本/ OS /等感兴趣的人: Windows 7 64位,GCC 4.9.2

如果您想了解更多信息,请告诉我。

1 个答案:

答案 0 :(得分:5)

phrase = (struct Word_setup *) malloc(SIZE);

应该是

phrase =  malloc(sizeof(struct Word_setup));

你拥有的是

#define SIZE (sizeof(phrase)) 

会给你指针大小而不是结构大小。您还可以使用更通用的分配内存的方法

type *p = malloc(sizeof(*p));