vit*_*aut 10 c++ malloc memory-management language-lawyer
这个问题询问malloc根据最佳答案分配的对象的动态类型是什么:
返回值
malloc是未初始化存储的块.在该存储中没有构造任何对象.因此它没有动态类型.
这带来了另一个问题:在什么时候说返回的存储malloc获取类型是有意义的.例如:
void *p = malloc(sizeof(int));
int *pi = (int*)p;
Run Code Online (Sandbox Code Playgroud)
我们可以说pi上面指的是动态类型的对象,int尽管它是未初始化的吗?
根据标准的现状是那里没有对象.
在需要时,通过定义([basic.def]), new-expression([expr.new])或实现([class.temporary])创建对象.
另请参阅P0137中的讨论,它将使上面的引用成为对象的定义:
起草说明:这维持了
malloc仅仅不足以创建对象的现状.
(int *)p 不是这些.
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |