首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OS对内存访问冲突的处理与对内存写入冲突的处理

OS对内存访问冲突的处理与对内存写入冲突的处理
EN

Stack Overflow用户
提问于 2012-07-15 07:22:13
回答 2查看 89关注 0票数 0

有没有可能,在什么条件下,Linux内核会因为内存写冲突而不是由于同一内存位置上的内存访问冲突而结束程序的执行。

例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//x is a pointer to a vector of structs
if( (*x)[i].member )
     break;                   //doesn't crash

if( (*x)[i].member )
    (*x)[i].member = 1;      //crashes, even though member is not used 
                             //elsewhere in the program 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-15 07:26:42

如果存储元素的页面是写保护的,就会发生这种情况。允许读取,但不允许写入(如果尝试这样做,进程将被终止)。

如果您尝试修改存储在只读部分中的字符串,则C和C++会发生这种情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
int main(void)
{
  char *foo = "hello";
  printf("%s\n", foo); // ok
  foo[0] = 'H';        // usually a crash
}
票数 2
EN

Stack Overflow用户

发布于 2012-07-15 07:25:47

如果您的数组位于只读内存中(例如,定义为const或将其底层内存类型更改为只读),则在尝试更改数组时可能会崩溃。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11490219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文