【发布时间】:2016-03-15 23:42:10
【问题描述】:
This question问malloc分配的对象的动态类型是什么,根据上面的回答:
malloc的返回值是一块未初始化的存储。在该存储中没有构建任何对象。因此它没有动态类型。
这带来了另一个问题:在什么时候说malloc 返回的存储获得了一个类型才有意义。例如:
void *p = malloc(sizeof(int));
int *pi = (int*)p;
我们可以说上面的pi 指向一个动态类型的对象int,尽管事实上它是未初始化的?
【问题讨论】:
-
我没有提到手,但作为一个持有不回答的人,当你给它写一个
int时。如果其他人想要完成这项工作并获得荣耀,那么引用就在关于对象生命周期(特别是 POD 类型)的某处。 -
@SteveJessop 关于对象生命周期的东西并没有这么说(在 C++14 中)。
-
@M.M:哦,那他们改了吗?
-
该部分一直在变化
-
@SteveJessop 那里有一个用于 C、IIRC 的对象,但不是 C++。
标签: c++ memory-management malloc language-lawyer