足够的空间,我有一个函数整数复制到缓冲区,如果缓冲区有足够的空间复制整数缓冲区如果缓冲区在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