双指针上的malloc()

时间:2016-03-03 08:00:24

标签: c pointers memory-management malloc

double *p;
p = malloc(sizeof(p));
if (p != NULL)
{
    *p = 5.15;
}

出于某种原因,p = malloc(sizeof(p));不起作用。我尝试分配尽可能多的内存p。这有什么问题?

2 个答案:

答案 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;
}