【发布时间】: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