本文主要是介绍[晕事]今天做了件晕事27;变量为初始化?union带来的困扰,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
刚看一段code,看不明白了,为什么有个变量没有初始化,就用了?后来让同事一块看,他找到了答案。
static inline void *acquire_slab(struct kmem_cache *s,struct kmem_cache_node *n, struct page *page,int mode, int *objects)
{void *freelist;unsigned long counters;struct page new;/** Zap the freelist and set the frozen bit.* The old freelist is the list of objects for the* per cpu allocation list.*/freelist = page->freelist;counters = page->counters;new.counters = counters;*objects = new.objects - new.inuse; 这里使用的随机值吗?
答案是:counters和objects/inuse是union类型的变量。
union {void *s_mem; /* slab: first object */unsigned long counters; /* SLUB */struct { /* SLUB */unsigned inuse:16;unsigned objects:15;unsigned frozen:1;};};
总结,有时候自己会在自己的怀疑里打转转,而忘记跳出来找一下数据类型的真实定义,跳出来看整个事件的全貌…。
记于此,以提醒自己!
这篇关于[晕事]今天做了件晕事27;变量为初始化?union带来的困扰的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!