【发布时间】:2013-07-27 20:24:37
【问题描述】:
我能知道volatile 变量在内存中的存储位置吗?
-
如果我全局声明意味着它存储在内存中的什么位置?
volatile int a =10; int main() { printf("Global A value=%d",a); return 0; } -
如果我在函数中本地声明意味着它存储在内存中的什么位置?
int main() { volatile int a =10; printf("Local A value=%d",a); return 0; }
它是否存储在堆栈/RAM/数据段中?
请澄清我的疑问。
【问题讨论】:
-
您在寻找什么样的答案? “它在哪里存储在内存中”是什么意思?你想知道它的地址吗?您是否试图根据标准对此类池的定义来了解此类变量来自哪个内存池?
-
@NicolBolas:我猜问题的一部分是“使用
volatile限定变量是否会改变编译器放置变量的内存位置”,答案是否定的。 -
我看不出这是另一个的副本。另一个是关于“
volatile是什么”,这个是“关于内存地址有什么结果”。 -
@JonathanLeffler:在我的第一个示例中,我知道全局初始化变量(没有 volatile)存储在“初始化数据段”和我的第二个示例中,因为它是局部变量(没有 volatile)它得到存储在堆栈中。所以当我添加 volatile 关键字时,变量存储位置是否会改变?...请澄清我的疑问