gpt4 book ai didi

c++ - 写入内存是一种可观察的行为吗?

转载 作者:IT老高 更新时间:2023-10-28 23:00:29 27 4
gpt4 key购买 nike

我查看了标准,但找不到任何迹象表明简单地写入内存会被视为可观察到的行为。如果不是,那将意味着编译后的代码不需要实际写入该内存。如果编译器选择优化此类访问,则涉及映射器内存或共享内存的任何内容都可能不起作用。

1.9-8 似乎定义了一个非常有限的可观察行为,但表明实现可以定义更多。可以假设任何质量编译器都会将修改内存视为一种可观察的行为吗?也就是说,它可能不保证原子性或顺序,但保证数据最终会被写入。

那么,我是否忽略了标准中的某些内容,或者写入内存仅仅是编译器决定做的事情?

来自当前或 C++0x 标准的语句很好。请注意,我不是在谈论通过函数访问内存,而是直接访问,例如将数据写入指针(可能通过 mmap 或其他库函数检索)。

最佳答案

这种东西就是 volatile 存在的目的。否则,写入内存并且从不明显读取它是不可观察的行为。但是,在一般情况下,优化器几乎不可能证明您从不回读它,除非在相对琐碎的示例中,所以这通常不是问题。

关于c++ - 写入内存是一种可观察的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893116/

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