我的程序的目标是读取一个文件,并输出具有最大外观的单词,以及出现的次数。但是我对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
如果你想要更多关于这方面的信息,请告诉我。
发布于 2015-04-20 16:54:39
phrase = (struct Word_setup *) malloc(SIZE);应该是
phrase = malloc(sizeof(struct Word_setup));你所拥有的是
#define SIZE (sizeof(phrase)) 将给出指针的大小,而不是结构的大小。您还可以使用更通用的分配内存的方法。
type *p = malloc(sizeof(*p));https://stackoverflow.com/questions/29753836
复制相似问题