【发布时间】:2019-02-18 15:41:06
【问题描述】:
我仍然对 malloc() 和 calloc() 这两个函数感到困惑
我们知道 calloc() 会初始化它分配的内存,而 malloc() 不会。
但是当我尝试以下代码时,结果似乎出乎意料。
typedef struct{
int *val;
}Node;
int main()
{
Node *q=(Node*)malloc(sizeof(Node));
if(q->val==NULL) printf("malloc initialized memory\n");
Node *p=(Node*)calloc(1,sizeof(Node));
if(p->val==NULL) printf("calloc initialized memory\n");
}
p 和 q 的 val 的变量 'val' 都是 NULL。 q->val 不是未初始化吗? 谁能给我解释一下?谢谢!
【问题讨论】: