VC++ 中 memcpy存在的问题
mob 发布于 2022-09-25

因为是在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第一个参数的长度限制,

mob
关注 私信
文章
61
关注
0
粉丝
0