c - 数据段从位置 0 开始

标签 c operating-system

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

相关文章:

c++ - 程序状态和调试器不一致

android - 如何知道双 SIM 安卓手机中哪个 SIM 卡正在消耗移动数据?

c - 使用 c 对齐 32 位数据的有效方法是什么

c++ - 遍历 C 中数组中不存在的变量

C - 指针内存分配

c - Visual Studio未分配的指针不为NULL

c - 如何快速将原始内存转储到结构中?

c - 死锁条件(科夫曼条件)

algorithm - 测试 CPU 调度

python - 确定字符串输入是否可以是 Python 中的有效目录