- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
形成对对象的引用是否构成访问?
以下是 GCC 和 Clang 目前所做的事情:
void test(int const volatile* ptr) noexcept {
*ptr; // movl (%rdi), eax // Reads *ptr
[[maybe_unused]] int const volatile& ref = *ptr; // Does not read *ptr
}
我的问题专门针对该声明
[[maybe_unused]] int const volatile& ref = *ptr;
ptr
指向的对象的值吗?ptr == nullptr
,这个语句单独来说是否是未定义的行为?ptr
指向 int
以外的内容,是否会造成别名冲突?请注意,我具体询问的是有关形成引用的问题,而不是使用它来读取值的问题。
编辑 09/12/2019:接受以下答案:
int const volatile& ref = *ptr;
是否读取所指向对象的值?
ptr == nullptr
时,这是未定义的吗?
*ptr
未定义。ptr
指向不同类型的对象,形成引用是否违反别名?
reinterpret_cast
-对正确类型的引用是允许且有效的。最佳答案
[basic.compound]/3 ... Every value of pointer type is one of the following:
(3.1) — a pointer to an object or function (the pointer is said to point to the object or function), or
(3.2) — a pointer past the end of an object (8.7), or
(3.3) — the null pointer value (7.11) for that type, or
(3.4) — an invalid pointer value.
[expr.unary.op]/1 The unary
*
operator performs indirection: the expression to which it is applied shall be a pointer to an object type, or a pointer to a function type and the result is an lvalue referring to the object or function to which the expression points.
因此,表达式*ptr
的含义仅针对指向对象或函数的指针ptr
定义 - 即,其值属于<的指针强>[基本化合物]/(3.1)。在所有其他情况下,此表达式表现出未定义的行为。
关于c++ - 形成对对象的引用是否构成访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59205336/
您好,我正在使用 AWS EKS 开发 kubernetes。当我将 docker-compose 文件转换为 kompose 文件时,我遇到了 kompose 文件的问题,我遇到了卷挂载点问题,而且
在将密码转换为二进制哈希值以存储在数据库中时,我注意到除了通常的乱码之外,还有一些引号、空格和字母表,这些巧合可能构成有效 SQL 语句的一部分。 出于好奇,我想知道是否有人遇到过任何字符串在哈希后神
我的组件具有动态部分和 compose。动态部分在其他模块中,即节点项目。 如果我想在页面中使用自定义元素,例如: 我收到一条错误消息,指出无法在 ./my-custom-element/someV
我有一个 pandas 数据框,其中一列由数组组成。所以每个单元格都是一个数组。 假设数据框 df 中有一个列 A,这样 A = [ [1, 2, 3], [4, 5, 6],
当 HTTP 请求和响应在互联网上传输时,请求中文本的格式是什么?是 ASCII 码吗? 例子:如果 HTTP 请求如下所示 - GET /mysite/ HTTP/1.1 -- rest of t
我是一名优秀的程序员,十分优秀!