而给来源的地址指针加上const的原因是防止拷贝的过程中将来源的内容不慎修改,在*指针左侧加上const就可以使const修饰的指针指向的内容变成常量....四.模拟实现my_memcpy()函数的不足
首先需要感谢一下这位大佬指出了模拟实现代码中存在的问题:
然后,我先在vs2022环境中测试了一下库函数在面对该问题时的处理结果:
即当源拷贝地址与目标拷贝地址重叠时...又测试了一下模拟实现函数my_memcpy()函数在面对该问题时的处理结果:
具体操作同上:
可以发现,我们上面实现的my_memcpy()函数在面对源地址空间与目标地址空间有重叠时,拷贝的结果就会出现错误...综上,在memcpy()函数部分,我将不再深入去探讨内存块重叠情况的内存拷贝的原理,图示以及模拟实现.而是将这部分的内容转移至对memmove()函数的详解博客中进行探讨.如果有感兴趣的朋友可以移步这篇博客...,里面有非常详细的memmove()函数的简介,memmove()函数具体使用方式,memmove()函数实现拷贝重叠内存块逻辑图示以及memmove()库函数的模拟实现等相关内容,详情点击下方链接即可跳转阅读