只读内存和堆内存

Vij*_*jay 5 c

AFAIK,在 C 语言中,字符串文字存储在只读存储器中。它实际上存在于硬件上的什么位置。

根据我的知识堆在 RAM 上。如果我错了,请纠正我。

堆和只读内存有什么不同?

它依赖于操作系统吗?

sha*_*oth 0

通常这是带有写保护设置的普通进程虚拟内存。

这取决于实现,但处理器通常使用特殊的元数据块来控制对内存区域的访问,并且操作系统可以相应地设置这些块。因此,字符串文字和所有其他不可更改的内容都会加载到设置保护的区域中。因此,当程序尝试修改该内存时,处理器内的一个特殊单元会检查是否允许写入,如果不允许,则会发出由操作系统处理的硬件中断。