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