【问题标题】:malloc() on double pointer [closed]双指针上的 malloc() [关闭]
【发布时间】:2016-06-16 10:26:28
【问题描述】:
double *p;
p = malloc(sizeof(p));
if (p != NULL)
{
    *p = 5.15;
}

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

【问题讨论】:

  • 您希望根据p 指向的内容分配尽可能多的内存。所以malloc(sizeof(*p));
  • "我尽量分配p需要的内存。"你到底为什么要做这样的事情? p 应该指向 double 类型的数据,因此缓冲区的大小应该是 sizeof(double)sizeof(*p)
  • 其实p = malloc(sizeof(p));起作用了,它分配了一个指针的大小。

标签: c pointers memory-management malloc


【解决方案1】:

我尝试根据p 的需要分配尽可能多的内存。

p 本身(作为变量)已经分配了(自己的)内存,您正在尝试的基本上是分配p 将指向的内存。

这里,p 指向一个double,所以它需要有一个内存区域才能存储一个double 值。所以,分配应该等于double的大小,即,

p = malloc(sizeof*p);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多