C では、memcpy 関数の 3 番目の引数として符号付き整数、特に負の整数を指定するとどうなりますか?
例:
memcpy(destBuf, source, -100*sizeof(source))
の結果は-100*sizeof(source)
memcpy によって unsigned として解釈されますか?
ありがとう!
最後のパラメーターは符号なしです。したがって、-100 * sizeof(source)を実行すると、膨大な数が得られます(これはラップアラウンド、つまりオーバーフローになります)。
これは、「4,294,967,196 * sizeof(source)」を実行するのと同じです。
編集:実際、私が気付いたのは間違っています。-100 * sizeof(source)を実行してから、unsignedに変換します。たとえば、sizeof(source)が4の場合、-400をunsignedに変換し、0xFFFFFE70(4,294,966,896)を返します。
いいえ、符号なしの数値として見られる-100は、40億程度のFFFFFF9Cのような巨大な符号なしの数値であるため、大量のデータをコピーします... sizeof(source)に乗算しているという事実は少し減らして...