volatile关键字有什么作用- C语言面试宝典 - 黑马程序员教程
文章推薦指數: 80 %
黑马程序员教程前端面试宝典模块专注提供各类C语言开发面试题及答案,致力收集C语言 ... C/C++ Volatile变量,与非Volatile变量之间的操作,是可能被编译器交换顺序的。
学科分类学科分类Java工程师前端工程师Python工程师大数据工程师PHP工程师C/C++工程师目录C语言C++volatile关键字有什么作用虚函数的作用和实现原理,什么是虚函数,有什么作用?有了虚函数,为什么还需要纯虚函数struct和class有什么区别?指针和引用有什么区别`new/delete`和`malloc/free`之间有什么关系?C++中的内存分配有哪几种方式?多继承存在什么问题?如何消除多继承中的二义性?请简述一下你对智能指针的理解。
悬挂指针与野指针有什么区别?请用代码实现strcat()函数请看一下下面这段代码有什么问题。
请用简单的语言告诉我C++是什么在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”sizeof与strlen的区别?**将“引用”作为函数返回值类型的格式、好处和需要遵守的规则重载(overload)和重写(overried)的区别STL常用的容器有哪些以及各自的特点是什么数据结构Linuxvolatile关键字有什么作用Volatile关键词的第一个特性:易变性。
所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。
Volatile关键词的第二个特性:“不可优化”特性。
volatile告诉编译器,不要对我这个变量进行各种激进的优化,甚至将变量直接消除,保证程序员写在代码中的指令,一定会被执行。
Volatile关键词的第三个特性:”顺序性”,能够保证Volatile变量间的顺序性,编译器不会进行乱序优化。
C/C++Volatile变量,与非Volatile变量之间的操作,是可能被编译器交换顺序的。
C/C++Volatile变量间的操作,是不会被编译器交换顺序的。
哪怕将所有的变量全部都声明为volatile,哪怕杜绝了编译器的乱序优化,但是针对生成的汇编代码,CPU有可能仍旧会乱序执行指令,导致程序依赖的逻辑出错,volatile对此无能为力针对这个多线程的应用,真正正确的做法,是构建一个happens-before语义。
点击此处隐藏目录
延伸文章資訊
- 1面试点:解读关键字volatile(C语言面试题分析之一)
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问 ...
- 2面試C/C++ 觀念整理
這裡有些題目是來自網路上MTK面試的C考古題,另外又加入了一些易搞混的觀念 ... 一個定義為volatile 的變量是說這變量可能會被意想不到地改變(尤其在 ...
- 3volatile关键字有什么作用- C语言面试宝典 - 黑马程序员教程
黑马程序员教程前端面试宝典模块专注提供各类C语言开发面试题及答案,致力收集C语言 ... C/C++ Volatile变量,与非Volatile变量之间的操作,是可能被编译器交换顺序的。
- 4嵌入式的面試題 - 立你斯學習記錄
在定義常量時,為什麼推薦使用const,而不是#define。 20、C語言的volatile的含義是什麼。使用時會對編譯器 ...
- 5【C/C++面試必備】volatile 關鍵字 - 有解無憂
volatile 意思是易變的,是一種型別修飾符,在C/C++中用來阻止編譯器因誤認某段代碼無法被代碼本身所改變,而造成的過度優化,編譯器每次讀取volatile ...