C++无效的指针值

Bla*_*Cat 2 c++ pointers

我想知道哪些指针值无效,所以我不必为了标记特殊的块状态而分配新内存(内存消耗很关键).所以我可以将它们用于特殊状态

  • 0x00000000 - 意味着没有加载块
  • 0x00000001 - 意味着块是空的
  • 0x00000002 - 块已满.当一些真实的东西需要保存到内存中时我会做新的Chunk(...);

Dav*_*rtz 8

我建议只使用包含指针和枚举的结构.但是如果由于某些原因不方便,只需分配一些小结构并使用它们的地址来表示魔术指针值.(当然,永远不要释放它们.)

您还可以使用静态对象的地址.像这样:

static int chunk_not_loaded_i, chunk_empty_i, chunk_full_i;
void *chunk_not_loaded = &chunk_not_loaded_i;
void *chunk_full = &chunk_full_i;

if (some_chunk == chunk_not_loaded)
    ...
Run Code Online (Sandbox Code Playgroud)