因为是在windows上测试,不知道Linux上是否也存在,没测试过,先看memcpy函数原型,该函数是将_Src指向的内存复制_Size个字节到_Dst指向的内存
void* __cdecl memcpy(
_Out_writes_bytes_all_(_Size) void* _Dst,
_In_reads_bytes_(_Size) void const* _Src,
_In_ size_t _Size
);
对于下面的代码
char *strDst = new char[10];
char *strSrc = "0123456789abcdefghi";
memcpy(strDst, strSrc, 20);
cout << strDst << endl;
虽然strDst长度为10,但是输出0123456789abcdefghi,多次测试,发现都是以memcpy的第三个参数设置长度为主,不受memcpy第一个参数的长度限制,