如何在使用typedef时分配内存?

时间:2013-03-23 07:53:27

标签: c

我有一个像这样的代码段

typedef struct node* node_t;

struct node{
int value;
node_t link;
};

......
......
......

//now I want to allocate memory somewhere else in the program.
node_t x;
x=(node_t) malloc(sizeof *x);

请您告诉我上述陈述是否合适? Eclipse显示此警告

warning: implicit declaration of function ‘malloc’ [-Wimplicit-function-declaration]
../tree.c:22:9:
warning: incompatible implicit declaration of built-in function ‘malloc’    

有人可以详细解释这样的情况吗?这实际上有什么问题。如果你能列出我可以在这个程序中分配内存的所有可能方法,我真的很感激?提前谢谢..

4 个答案:

答案 0 :(得分:1)

要使用malloc,您需要加入<stdlib.h>。另外,分配内存,如

node_t x = malloc(sizeof node_t);

您不能将内存分配给堆栈变量,而只能分配给指针。并且永远不会强制转换为已分配的类型,因为malloc返回void*,并且不需要明确地进行转换。

答案 1 :(得分:0)

你需要一个

#include <stdlib.h>

使用malloc之前。您显然在源中声明了该函数错误。永远不要声明C标准库函数。只需包含声明它们的标题。

答案 2 :(得分:0)

  

请您告诉我上述陈述是否合适?

不,它不是:您正在转换malloc()的返回值而您错过了<stdlib.h>标题。

答案 3 :(得分:0)

您收到警告,因为您在范围内没有malloc声明;您需要包含stdlib.h头文件:

#include <stdlib.h>

你也应该放弃演员阵容。没有必要,并且在其他编译器下将禁止诊断您尝试将int值分配给指针类型。

不要隐藏typedef背后的指针。这几乎总是一个坏主意。