double *p;
p = malloc(sizeof(p));
if (p != NULL)
{
*p = 5.15;
}
出于某种原因,p = malloc(sizeof(p));
不起作用。我尝试分配尽可能多的内存p
。这有什么问题?
答案 0 :(得分:4)
我尝试分配与
p
需要一样多的内存。
p
本身(作为变量)已经分配了(自己的)内存,你正在尝试的基本上是分配p
将指向的内存。
此处,p
指向double
,因此需要有一个内存区域才能存储double
值。因此,分配应该等于double
的大小,即
p = malloc(sizeof*p);
答案 1 :(得分:0)
malloc return void *,因此您需要提供类型转换
double *p;
p = (double *)malloc(sizeof(double));
if (p != NULL)
{
*p = 5.15;
}