c语言中memcpy中的第三个参数可以是是负数么?
发布网友
发布时间:2023-07-18 22:55
我来回答
共3个回答
热心网友
时间:2024-11-19 04:22
不可以的,
void
*memcpy(
void
*dest,
const
void
*src,
size_t
count
);
这是memcpy的原型,第三个参数是size_t型,
size_t
unsigned
integer
size_t
就是无符号整形的别名,所以第三个参数是大于等于0的整数。
memcpy的第三个参数代表的是复制内存空间的大小,一个空间的大小怎么可能是负数。
热心网友
时间:2024-11-19 04:23
第三个参数如果是负数会产生你预期以外的效果,很可能会导致内存溢出。
原因是size_t是unsigned型,如果传入负数,会被转换成一个很大的数值,这样copy的时候很可能你的源buff就会被撑爆,导致内存溢出
热心网友
时间:2024-11-19 04:23
你要搞清楚memcpy()函数的第三个参数意思
第三个参数是大小,不是个数
按你的要求应该是memcpy(a,
b,
sizeof(int)*2);
你试试吧