0xdeadbeaf的理解

在看lustre代码时,ldlm_lock_free函数中调用了

#define OBD_SLAB_FREE(ptr, slab, size)                                        \
do {                                                                          \
        LASSERT(ptr);                                                         \
        CDEBUG(D_MALLOC, "slab-freed '" #ptr "': %d at %p.\n",                \
               (int)(size), ptr);                                             \
        obd_memory_sub(size);                                                 \
        POISON(ptr, 0x5a, size);                                              \
        cfs_mem_cache_free(slab, ptr);                                        \
        (ptr) = (void *)0xdeadbeef;                                           \
} while (0)

这里的0xdeadbeef貌似很奇特,就查了一下,原来类似这样的值很多,像0xabababab,它们的作用就是为内存做标记,插在那里,就表示从这个位置往后的一段有特殊作用的内存,而这个位置往前,禁止访问。但是放在这里,为什么之前的禁止访问了呢?

你可能感兴趣的:(cache)