在C中,memcpy如何处理有符号整数参数?

ult*_*ohn 0 c memcpy

在C中,如果我提供一个有符号整数,特别是一个负整数作为memcpy函数的第三个参数,会发生什么?

例:

 memcpy(destBuf, source, -100*sizeof(source))
Run Code Online (Sandbox Code Playgroud)

-100*sizeof(source)memcpy会将结果解释为unsigned吗?

谢谢!

Goz*_*Goz 7

最后一个参数是无符号的.所以通过做-100*sizeof(源码),你会获得一个巨大的数字(那将环绕,即溢出).

这相当于做"4,294,967,196*sizeof(source)".

编辑:其实这是错的我刚刚意识到.它将执行-100*sizeof(源),然后将其转换为无符号.例如,如果sizeof(source)为4,那么它将-400转换为无符号并给你0xFFFFFE70(4,294,966,896).