Mar*_*ark 15 c++ arrays malloc multithreading volatile
我认为以下将给我10个不稳定的整数
volatile int foo[10];
Run Code Online (Sandbox Code Playgroud)
但是,我认为以下内容不会做同样的事情.
volatile int* foo;
foo = malloc(sizeof(int)*10);
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我,以及如何使用malloc获得易失性的项目数组.
谢谢.
ton*_*ony 13
int volatile * foo;
Run Code Online (Sandbox Code Playgroud)
从右到左阅读"foo是指向volatile int的指针"
所以无论你通过foo访问什么int,int都将是volatile.
PS
int * volatile foo; // "foo is a volatile pointer to an int"
Run Code Online (Sandbox Code Playgroud)
==
volatile int * foo; // foo is a pointer to an int, volatile
Run Code Online (Sandbox Code Playgroud)
意思是foo是不稳定的.第二种情况实际上只是一般的从右到左规则的剩余部分.要吸取的教训是养成使用习惯
char const * foo;
Run Code Online (Sandbox Code Playgroud)
而不是更常见的
const char * foo;
Run Code Online (Sandbox Code Playgroud)
如果你想要更复杂的东西,比如"指向函数返回指向int的指针",那就没有任何意义了.
PS,这是一个巨大的(和我添加答案的主要原因):
我注意到你将"多线程"作为标记包含在内.你是否意识到volatile在多线程方面几乎没有什么好处?
小智 6
volatile int* foo;
Run Code Online (Sandbox Code Playgroud)
是要走的路.该挥发性类型限定符作品就像常量类型限定符.如果你想要一个指向常量数组的指针,你会写:
const int* foo;
Run Code Online (Sandbox Code Playgroud)
而
int* const foo;
Run Code Online (Sandbox Code Playgroud)
是一个指向整数的常量指针,该整数本身可以更改.volatile以同样的方式工作.
| 归档时间: |
|
| 查看次数: |
6599 次 |
| 最近记录: |