gpt4 book ai didi

c++ - 如何在 C++ 中声明使用 malloc 创建的数组是 volatile

转载 作者:IT老高 更新时间:2023-10-28 22:25:58 24 4
gpt4 key购买 nike

我认为以下将给我 10 个 volatile 整数

volatile int foo[10];

但是,我认为以下内容不会做同样的事情。

volatile int* foo;
foo = malloc(sizeof(int)*10);

如果我对此有误以及如何使用 malloc 获得易变的项目数组,请纠正我。

谢谢。

最佳答案

int volatile * foo;

从右到左读取“foo 是一个指向 volatile int 的指针”

所以无论你通过 foo 访问什么 int,这个 int 都会是 volatile。

附言

int * volatile foo; // "foo is a volatile pointer to an int"

!=

volatile int * foo; // foo is a pointer to an int, volatile

意思是 foo 是易变的。第二种情况实际上只是一般从右到左规则的遗留物。要吸取的教训是养成使用的习惯

char const * foo;

而不是更常见的

const char * foo;

如果你想要更复杂的东西,比如“指向函数的指针返回指向 int 的指针”,那么它就有意义了。

P.S.,这是一个大问题(也是我添加答案的主要原因):

我注意到您将“多线程”作为标签包含在内。您是否意识到 volatile 在多线程方面几乎/没有什么好处?

关于c++ - 如何在 C++ 中声明使用 malloc 创建的数组是 volatile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304729/

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