这就是代码中的内容:
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.
答案 0 :(得分:0)
我将假设您正在谈论C.请用正确的语言标记您的问题。
在开发人员拥有假设的代码 ub4
正好是4个字节之前,事情仍然可以“正常工作”。然后,这样的错误可能导致诸如缓冲区溢出之类的事情(可能无法明显检测到,或者甚至可能在随机表现出症状之前多年未被注意到)......或者它们可能恰好不会引起症状。但是,它们仍在调用未定义的行为,应该修复。
开发人员也可能从未真正使用类型宽度作为代码中的假设。