我正在阅读Head First C书,我读到我们无法更改字符串文字,因为它存储在一个只读内存的常量内存池中.所以朋友是这个恒定的内存池和系统的ROM都是一回事.或者在ROM以外的内存中还有另一
不要求字符串存储在ROM中;如果是这种情况那么你怎么能将程序从硬盘加载到RAM并运行它?由于ROM不可写,因此无法“加载到ROM”.
对于典型的现代PC级计算机,这意味着字符串文字被加载到RAM的一部分中,该部分在加载完成时变为只读.
当然,对于嵌入式系统,它也意味着字符串文字可以有效地放置在实际的只读存储器(闪存或真正的ROM)中,因为无法有效地修改数据.这对于嵌入式系统来说很方便,其中“代码空间”(闪存或ROM)的数量通常远大于可用RAM的数量.
总而言之,它是一个相当通用的规范:它只是说从程序的角度来看,字符串文字被认为是不可修改的.它没有说明如何实施.文字完全可以修改,即没有任何形式的保护来防止尝试.这并不意味着它突然变得有效,只是实施不是保护你自己.