如果 C 中缓冲区有足够的空间,则将整数复制到缓冲区
如果缓冲区有足够的空间,我有一个函数可以将整数复制到缓冲区中。
void copy_int(int val, void *buf, int maxbytes)
{
if (maxbytes-sizeof(val) >= 0)
mempcy(buf, (void *) &val, sizeof(val));
}
问题是,即使 maxbytes 太小,它也总是将值复制到缓冲区中。 我想知道这是为什么?
I have a function to copy an integer into buffer if the buffer have enough space
void copy_int(int val, void *buf, int maxbytes)
{
if (maxbytes-sizeof(val) >= 0)
mempcy(buf, (void *) &val, sizeof(val));
}
The problem is it always copies the value to the buffer even when maxbytes is too small.
I wonder why that is?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
sizeof(val)
是一个无符号值。int
-unsigned
生成一个无符号值。使用:
if (maxbytes >= sizeof(val))
sizeof(val)
is an unsigned value.int
-unsigned
produces an unsigned value.Use:
if (maxbytes >= sizeof(val))
sizeof(val)
的类型为size_t
,这是无符号的。因此,maxbytes-sizeof(val)
也将是无符号的,因此始终为>= 0
。您应该尝试
maxbytes-(int)sizeof(val)
。sizeof(val)
is of typesize_t
, which is unsigned. Therefore,maxbytes-sizeof(val)
will also be unsigned, and therefore always be>= 0
.You should try
maxbytes-(int)sizeof(val)
.