0

我对 Linux 内核讨论最多的宏“container_of”的扩展中的语句 ((type*)0)->member 有点困惑

为什么在 container_of 宏中取消引用 0 不会产生问题?我认为(可能是我错了)因为我们将 0 类型转换为(type*),所以我们没有问题。但是等一下,考虑一下:-

void irq_handler(void *ptr)
{
    struct my_struct *p = (struct my_struct *) ptr;
    ptr->my_member = 7;
    global_variable = ptr->my_another_member;
    ...
    ...
}

假设由于某些内存损坏,我的 ptr 变为 NULL,那么在这种情况下内核肯定会由于取消引用 NULL 指针而崩溃?

为什么会有这种偏袒或分化?还是我的任何理解都是错误的?请纠正我。

4

0 回答 0