微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问特定地址时是否可以强制访问?

我们有一个超大的数组,用于alignment的目的,这样一个错误就不会被通常的机制所捕获。

是否有可能在Windows中保护一个小的任意区域(在数组的开始和结束时是16个字节),这样会导致访问冲突? 语言是C ++。

在C中的fchmod函数

如何在ASP.NET(3.5)中创build“公共”用户configuration文件页面

你怎么样cppfunction?

不能从'const char '转换为'char *'x100000(Qt Creator C ++ Windows 32)

如何在Windows机器上安装Cygwin来使用gcc?

我相信,在x86架构中,将内存标记为受保护的最佳粒度是针对一个页面(我认为是4K)。 您可以设置数组,使开始或结尾落在页面边界(并保护该页面)。 但是,如果两端都落在这样的边界上,当然需要一个非常特定的数组长度。

这里是一个如何设置守卫页面的例子。

您可以在UNIX操作系统上使用__attribute__((aligned (PAGESIZE)))和mprotect组合执行此mprotect 。 在Windows上,我认为有一个相当于mprotect ,但它也限于一页内存。

内存访问是由硬件完成的,而不是由软件完成的。 如果每个单独的内存访问都需要通过一些数据结构来检查页面是否受到保护,那将会非常缓慢。

不直接。 您可以做的最接近的是在这些缓冲区上设置数据断点。 但是,x86总共有4个这样的断点,它们最多为8个字节。 此外,你需要在环0(内核模式)设置它们。

我不认为这可以做到。 你总是可以自己抛出一个异常。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐