int main(void)
{
int *a=6;
printf("%d",*a);
return 0;
}
在这段代码中我们直接访问一些内存地址让6,我们会得到分段错误。为什么? 我如何在没有任何错误的情况下访问它?我可以直接访问内存地址吗? 内存管理是处理器还是操作系统的特性?
答案 0 :(得分:1)
每次加载程序时,它都会保留一系列属于它的地址({{3}}) 为了简化它,想想它就像地址让我们说1000直到 4000你的堆栈和堆驻留意味着你只能在那个范围内分配内存,单独引用这些地址和这些地址。 让我们想象一下"如果"让我们说我们实际上可以访问地址6但是在那个位置你的操作系统实际上有一些非常重要的数据,而且你不小心写了这些数据。操作系统程序员非常聪明,不允许我们访问我们不应该访问的内容。