C++ 无效的指针值

标签 c++ pointers

<分区>

我想知道哪些指针值无效,这样我就不必分配新内存来标记特殊 block 状态(内存消耗很关键)。所以我可以将它们用于特殊状态,例如

  • 0x00000000 - 表示 block 未加载
  • 0x00000001 - 表示 block 为空
  • 0x00000002 - block 已满。当需要将一些真实的东西保存到内存中时,我会执行 new Chunk(...);

最佳答案

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

你也可以使用静态对象的地址。像这样:

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)
    ...

关于C++ 无效的指针值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766869/

相关文章:

c++ - 对一个类/文件的 undefined reference 错误

c++ - 函数错误 "was not declared in this scope"

c++ - 如何在 ubuntu 中安装 boost 多精度库

c++ - C/C++ 如何知道如何针对正确的体系结构进行编译?

c - C 中堆栈操作中的指针变量与全局变量

OpenCL 缓冲区之间的指针

c++如何在创建新结构时将NULL值分配给成员指针

c++ - VC++,x86上的/volatile:ms

C++ 指针运行时错误

c++ - 指向类数据成员 "::*"的指针