访谈问题:对于这种假设情况:如果程序的数据段从地址0开始。会发生什么?
考虑此问题的任何Linux操作系统。我理解basics of memory layout of a program,但无法找出该问题的确切答案。请列出可能性。

最佳答案

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

int my_global;

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

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


那么,如果my_global具有地址零,并且空指针也具有地址零怎么办?

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

关于c - 数据段从位置0开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23834470/

10-11 16:32