代码之家  ›  专栏  ›  技术社区  ›  Gui13

在C语言中选择什么作为一个好的标记?[关闭]

  •  3
  • Gui13  · 技术社区  · 14 年前

    所以,我想知道在C语言中除了常见的标记外,是否还有一个好的标记可以选择 0xDEADBEEF 0x0BADA550 .

    有什么理由选择一个或另一个特定的值吗?

    6 回复  |  直到 14 年前
        1
  •  6
  •   Matteo Italia    14 年前

    whole page

    不管怎样,如果您正在使用x86,您应该考虑遵循@torak的建议,内存充满了 int 3 救了我好几次。如果你觉得有创意,你可以让它更容易被识别和使用 CC90CC90 ,表示交替 内景3 nop .

        2
  •  4
  •   torak    14 年前

    0xCCCCCCCC . 如果,由于某种错误,它被执行了 0xCC 翻译成 INT 3 说明。

    这将在IA-32和x86-64中工作。我不确定是否有其他体系结构的等价物。

        3
  •  3
  •   Matt Joiner    14 年前

    我总是选 0x80000000 , 0x80000001 为每个新区域类型递增,以使用有符号整数来填充意外值。对于无符号类型,这些值的使用量会大得出奇,对于有符号类型,这些值的使用量很大程度上是负数,对于所做的任何减法,这些值都会突然变为正数(从而同时测试其他bug)。这还有另一个整洁的副作用,即各种ALU位将被设置为溢出,这可以通过使用 -ftrapv

        4
  •  0
  •   nmichaels    14 年前

    0xBABECAFE , 0xBADADD00 0xBADBAD00 , 0xFADEFADE

    0xCAFEBABE 我知道,这是Java的神奇数字。唯一让一个比另一个更好的是它不太可能出现在数据或未初始化的内存中。所以不要使用 0x00000000 或全部 F s。

        5
  •  0
  •   Jonathan Leffler    14 年前

    这取决于你想标记什么。例如,是否需要区分已分配但未初始化的内存和已释放的内存?如果是这样,你需要两个不同的标记。

        6
  •  0
  •   ablerman    14 年前

    每个人都有自己的偏好。如果团队中的每个人都使用不同的标记,这有助于确定错误的来源。例如: