【发布时间】:2015-02-13 13:04:06
【问题描述】:
我目前正在重新编码 malloc() 并且需要处理调用者执行缓冲区大小计算导致负值然后传递给 malloc() 的情况?
我知道参数是size_t,所以我是无符号整数吗?
这样,我想检查将传递给我重新编码的malloc() 的大小,但我该怎么做呢?
因为如果我传递一个负参数,它会变成一个随机数,比如18446744073709551613 我刚刚得到。
所以我的问题是:当参数为size_t(无符号整数)时,如何检查参数是否为负,它会直接转换为天文值,不是吗?
【问题讨论】:
-
不是随机的,
-1永远是max unsigned value for that type -
检查 unsigned int 值是否为负是没有意义的
-
"如何检查参数是否为负" -
size_t;根据定义和无符号整数类型,因此在您获得它时它已经是非负数。 -
@all 当然,我知道这一点,但是当我尝试
malloc(-3)并在我的malloc(size_t size)的第一行打印输出时,我得到了 18446744073709551613。这就是我在这里发布的原因。
标签: c memory-management malloc