首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用malloc为结构分配内存?

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

Stack Overflow用户
提问于 2015-04-20 16:52:33
回答 1查看 656关注 0票数 5

我的程序的目标是读取一个文件,并输出具有最大外观的单词,以及出现的次数。但是我对malloc和它的语法有问题。这是malloc所指的结构:

代码语言:javascript
复制
struct Word_setup {
    char word[max_length];
    int count;
};

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

代码语言:javascript
复制
    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

如果你想要更多关于这方面的信息,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2015-04-20 16:54:39

代码语言:javascript
复制
phrase = (struct Word_setup *) malloc(SIZE);

应该是

代码语言:javascript
复制
phrase =  malloc(sizeof(struct Word_setup));

你所拥有的是

代码语言:javascript
复制
#define SIZE (sizeof(phrase)) 

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

代码语言:javascript
复制
type *p = malloc(sizeof(*p));
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29753836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档