数据段从位置0开始

时间:2014-05-23 16:42:40

标签: c operating-system

面试问题:对于这种假设情况:如果程序的数据段从地址0开始。会发生什么?
考虑任何Linux OS来解决这个问题。我理解basics of memory layout of a program,但无法弄清楚这个问题的确切答案。请列出可能性。

1 个答案:

答案 0 :(得分:0)

假设数据段从地址0开始。

int my_global;

void increment(int *ptr)
{
    assert(ptr != NULL);
    *ptr += 1;
}

void main()
{
    increment(&my_global);
}

那么,如果my_global的地址为零,并且空指针的地址为零,会发生什么?

(从技术上讲,这不符合C标准,因为C标准规定全局变量的地址等于NULL。)