我的程序的目标是读取文件,并输出具有最大外观的单词以及出现次数。但是我遇到了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
如果您想了解更多信息,请告诉我。
答案 0 :(得分:5)
phrase = (struct Word_setup *) malloc(SIZE);
应该是
phrase = malloc(sizeof(struct Word_setup));
你拥有的是
#define SIZE (sizeof(phrase))
会给你指针大小而不是结构大小。您还可以使用更通用的分配内存的方法
type *p = malloc(sizeof(*p));