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