我正在阅读关于分段错误的维基百科,并通过以下代码和声明来完成。
int main(void)
{
char *s = "hello world";
*s = 'H';
}
编译包含此代码的程序时,字符串“hello world“被放置在标记的程序可执行文件的部分中 只读;加载时,操作系统将其与其他人放在一起 只读段内存中的字符串和常量数据。什么时候 执行时,变量s被设置为指向字符串的位置,并且 尝试通过变量写入H字符 内存,导致分段错误。编译这样的程序 使用不检查只读分配的编译器 编译时的位置。
我的问题是文件许可,即当可执行文件标记为只读和读写时 等等?
我想了解所有关于文件权限的信息。我们可以明确更改文件权限吗?
答案 0 :(得分:5)
“hello world”存储在 memory 的只读部分。写入可执行文件内存的给定部分的能力与写入磁盘上可执行文件的能力无关。
答案 1 :(得分:2)
在这个问题中你有三个不相关的概念:
即。在Windows上,您可以使用VirtualProtect函数指定在程序的地址空间中分配的内存块应具有的属性。