序列在窄字符类型的数组中

问题描述 投票:1回答:1

N3797标准(第3.7.4.3/1节)中提供了可跟踪指针对象的以下定义:

可跟踪的指针对象是

[...]

- 窄字符类型数组(3.9.1)中的元素序列,其中序列的大小和对齐方式与某些对象指针类型的大小和对齐方式匹配。

我理解这个限制并不简单,我想看一下这种可追踪指针对象的真实例子。你能提供吗?我一般对排列有疑问。正如我在alignof所看到的那样,char的对齐方式是1,但任何指向类型的指针的对齐方式都是8 ...

c++ arrays pointers
1个回答
1
投票

本节的想法是为垃圾收集提供一些支持(参见):只要指向一个对象的指针,它就不会被垃圾收集。在某些情况下,将指针存储在整数(intptr_t)或字节数组中是很常见的。因此,垃圾收集器必须考虑指针类型之外的指针的某些附加表示,然后才能假定对象未被使用。

但是,为了避免垃圾收集器在任意字节偏移处搜索指针而导致它必须进行8而不是1比较,指针不能被任意隐藏。相反,它们只能隐藏在字节数组中,以便字节数组中的指针正确对齐。

请注意,垃圾收集支持是最小的:它几乎不足以允许实现垃圾收集器并为其提供合理的语义。 C ++标准并未强制要求垃圾收集由实现实现,或者对象自动被垃圾收集。但是,存在用于C ++的垃圾收集系统。

© www.soinside.com 2019 - 2024. All rights reserved.