什么使const在机器的较低级别?

Ton*_*ion 5 c++ constants

const什么让你无法在机器的低级别隐式地传递非常量?如何通过机器确定这是const什么?

(除了这const意味着它意味着......)

它是否可能存储在内存的.rdata部分中,或者是否有一些设置使其成为const或者它是如何工作的?

任何人都可以澄清吗?

Oli*_*rth 12

const主要是编译时间的东西; 它并不意味着它们可能在运行时存储的位置,或者它们是否可能在运行时受到保护.

实际上,编译器可以选择将常量放在可执行文件的程序部分中,该部分可以由内存管理单元(如果存在)进行写保护.或者,编译器可以将常量直接折叠到代码中,以便它们甚至不作为可寻址位置存在.

或者,它可能不会做这些事情.


Pau*_*lin 8

const-ness几乎总是由编译器强制执行,仅此而已.完全没有机器保护.

编辑:@Oli Charlesworth的答案比我的好.