在C中,如果我提供一个有符号整数,特别是一个负整数作为memcpy函数的第三个参数,会发生什么?
例:
memcpy(destBuf, source, -100*sizeof(source))
Run Code Online (Sandbox Code Playgroud)
-100*sizeof(source)memcpy会将结果解释为unsigned吗?
谢谢!
最后一个参数是无符号的.所以通过做-100*sizeof(源码),你会获得一个巨大的数字(那将环绕,即溢出).
这相当于做"4,294,967,196*sizeof(source)".
编辑:其实这是错的我刚刚意识到.它将执行-100*sizeof(源),然后将其转换为无符号.例如,如果sizeof(source)为4,那么它将-400转换为无符号并给你0xFFFFFE70(4,294,966,896).