根据我的理解,数据段由两部分组成。
1. Initialized segment.
a. Read Only.
b. Read/Write.
2. Uninitialized segment.
Run Code Online (Sandbox Code Playgroud)
例子:
int main(void)
{
char* cptr = "Hello"; // The string "Hello" will sit in 'Read only' memory.
//cptr[2] = 'Z'; // Gives seg fault.
...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,“只读”内存是否仅用于存储字符串常量?
你是对的,几乎......一个程序中的全局静态数据有三种:
const
全局数据保留。 它不一定在数据部分,它可以在程序的文本部分(通常是.rodata
段),因为它通常不能被程序修改。.data
segment)。.bss
段)所需的大小。