足夠的空間,我有一個函數整數複製到緩衝區,如果緩衝區有足夠的空間複製整數緩衝區如果緩衝區在C
void copy_int(int val, void *buf, int maxbytes)
{
if (maxbytes-sizeof(val) >= 0)
mempcy(buf, (void *) &val, sizeof(val));
}
問題是,它總是值複製到緩衝區,即使最大字節太小。 我想知道這是爲什麼?
足夠的空間,我有一個函數整數複製到緩衝區,如果緩衝區有足夠的空間複製整數緩衝區如果緩衝區在C
void copy_int(int val, void *buf, int maxbytes)
{
if (maxbytes-sizeof(val) >= 0)
mempcy(buf, (void *) &val, sizeof(val));
}
問題是,它總是值複製到緩衝區,即使最大字節太小。 我想知道這是爲什麼?
sizeof(val)
是類型size_t
,它是無符號的。因此,maxbytes-sizeof(val)
也將是無符號的,因此總是>= 0
。
您應該嘗試maxbytes-(int)sizeof(val)
。
sizeof(val)
是一個無符號值。 int
- unsigned
產生一個無符號的值。
用途:if (maxbytes >= sizeof(val))
打開你的編譯器警告和**介意他們** – pmg 2011-04-07 15:56:42