C代码喜欢这个:
#include <stdio.h>
#include <unistd.h>
#define DIM(a) (sizeof(a)/sizeof(a[0]))
struct obj
{
int a[1];
};
int main()
{
struct obj *p = NULL;
printf("%d\n",DIM(p->a));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个对象指针p是NULL,所以,我认为这p->a是非法的.但是我已经在Ubuntu14.04中测试了这段代码,它可以正确执行.所以,我想知道为什么......
注意:原始代码在int a[0]上面,但我已经改变了,int a[1]因为每个人似乎都挂在那而不是实际的问题,这是:
sizeof(p->a)当表达式p等于时,表达式是否有效NULL?
正如LDD3第6章p175所示,我们可以通过current->uid和获取当前进程UID和EUID current->euid.但是,定义struct task_structLinux内核4.2的不包含由命名字段uid或euid更多.所以,我想知道是否有其他方法可以获得UID和EUID?谢谢!