如果你甚至错误地计算出数据类型的大小,那么事情仍然有效吗?

时间:2011-03-31 14:02:02

标签: gdb typedef

这就是代码中的内容:

typedef  unsigned long  int  ub4;   /* unsigned 4-byte quantities */

然而:

(gdb) p sizeof(unsigned long  int)
$7 = 8

所以unsigned long int实际上占用了我的CPU的8个字节。当出现这样的基本错误时,情况如何仍然有用?

顺便说一句,为什么gdb无法识别ub4

(gdb) p sizeof(ub4)
No symbol "ub4" in current context.

1 个答案:

答案 0 :(得分:0)

我将假设您正在谈论C.请用正确的语言标记您的问题。

在开发人员拥有假设的代码 ub4正好是4个字节之前,事情仍然可以“正常工作”。然后,这样的错误可能导致诸如缓冲区溢出之类的事情(可能无法明显检测到,或者甚至可能在随机表现出症状之前多年未被注意到)......或者它们可能恰好不会引起症状。但是,它们仍在调用未定义的行为,应该修复。

开发人员也可能从未真正使用类型宽度作为代码中的假设。