面试问题:对于这个假设情况:如果程序的数据段从地址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/