【发布时间】:2015-06-27 12:42:51
【问题描述】:
我的程序的目标是读取一个文件,并输出出现次数最多的单词,以及出现次数。但是我遇到了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))
编辑:
对于那些对编译器版本/操作系统/等感兴趣的人: Windows 7 64 位,GCC 4.9.2
如果您想了解更多信息,请告诉我。
【问题讨论】:
-
#define SIZE (sizeof(*phrase)) -
真的很值得用
type *ptr = malloc( sizeof(*ptr) );这样即使换了type也不会犯这种错误。 -
@JoachimPileborg 这很奇怪,因为我已经尝试了两种方法,当我尝试在 sublime 中构建文件时,如果我不转换结果,它会给我一个错误
-
C++ 需要强制转换。对于 C,它是可选的(并且不需要)。你是用 C++ 编译的吗?