gpt4 book ai didi

c++ - malloc分配的对象动态类型是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:27 26 4
gpt4 key购买 nike

例如,C++ 标准指的是术语“动态类型”(而 C 标准在类似上下文中指的是“有效类型”)

If a program attempts to access the stored value of an object through a glvalue of other than one of the following types the behavior is undefined:

  • the dynamic type of the object,

但是用malloc分配的对象的动态类型是如何确定的呢?

例如:

void *p = malloc(sizeof(int));
int *pi = (int*)p;

pi指向的对象的动态类型是否为int

最佳答案

根据 C++ 规范:

Dynamic type:

<glvalue> type of the most derived object (1.8) to which the glvalue denoted by a glvalue expression refers

malloc 的返回值是一个未初始化的存储 block 。在该存储中没有构造任何对象。因此它没有动态类型。

void* 不指向对象,只有对象才有动态类型。

您可以通过开始其生命周期在该存储中创建一个对象。但在您这样做之前,它只是存储空间。

关于c++ - malloc分配的对象动态类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36021322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com