【发布时间】:2013-02-14 19:04:17
【问题描述】:
我收到Access violation writing location at 0xABCDEF。
我尝试了很多方法来解决这个问题。但最后还是做不到。
#define xyz 0xABCDEF
#define ptr (UINT16 *) (xyz)
int main()
{
//int *ptr;
//ptr = (int*)malloc(sizeof(int));
*ptr = 0;
return 0;
}
请帮帮我。
【问题讨论】:
-
你想做什么?
-
@BlagovestBuyukliev:我想在那个特定位置填零。
-
并非每个位置都是“合法”位置。在没有引用变量的情况下从任意位置读取或写入在技术上是未定义的行为。
-
@BlagovestBuyukliev:它是一个配置寄存器地址。我需要在那里禁用中断
-
如果你在操作系统中运行,操作系统应该提供一种方法来做到这一点——并阻止你自己做。它的全部工作是充当进程之间的裁判;它控制硬件和内存,因此进程不会互相践踏。如果您正在编写内核驱动程序,您只需要直接处理硬件......此时您应该已经对操作系统的保护机制如何工作有所了解。
标签: c++ c linux-kernel operating-system interrupt