C++实现内存复制函数(memmove解决内存重叠)
来源:互联网 发布:mysql create trigger 编辑:程序博客网 时间:2024/05/16 15:37
memmove函数用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。
例如将ABC段复制到BCD段时,目标区域和源区域有重叠,当A段复制到B段时,B段发生损坏,无法再将完整的B段复制。
因此发生存在区域重叠时采用逆向复制
void* my_memmove(void*dest, const void* src, size_t n){char*_dest = (char*)dest;const char*_src = (char*)src;if (_dest > _src&&_dest < _src + n)//发生区域重叠{while (n--){*_dest--= *(_src+n);//逆向复制}}else//未发生区域重叠 正向复制{while (n--){*_dest++ = *_src++;}}return dest;}int main(){int s[4] = {1,2,3,4};for (int i = 0; i < 4; i++){cout << s[i] << "";}cout << endl;my_memmove(s+2, s + 3,1*sizeof(int));for (int i = 0; i < 4; i++){cout << s[i]<<"";}getchar();return 0;}
0 0
- C++实现内存复制函数(memmove解决内存重叠)
- 【C语言】模拟实现memmove函数(考虑内存重叠)
- c语言内存管理函数,模拟memcpy、memmove(实现内存重叠拷贝)、memset
- 避免内存重叠的memmove()函数
- memmove()函数:复制内存内容(优点:可以处理重叠的内存块)
- memmove函数与内存重叠
- C语言 编写函数实现内存重叠拷贝,不允许调用memmove函数
- memmove函数如何考虑内存重叠的
- memmove 内存拷贝函数实现
- 内存重叠之strcpy&memmove
- memcpy memmove区别和实现(如何处理内存重叠问题)
- 编写一个memmove函数,实现内存拷贝
- 模拟实现内存操作函数memcpy、memmove
- strcpy,memcpy,memmove和内存重叠分析
- strcpy,memcpy,memmove和内存重叠分析
- 由memcpy strcpy memmove看内存重叠
- strcpy,memcpy,memmove的内存重叠
- 实现内存复制函数
- 替换空格
- 剑指offer之面试题8:旋转数组的最小数字
- POI之Excel单元格合并边框问题
- HDU 5665 Lucky(思维题)【BC】
- 【hdu2087】剪花布条——KMP
- C++实现内存复制函数(memmove解决内存重叠)
- operator关键字(重载操作符)
- Android API Guides---Input Events
- 数据库三大范式的一己之见
- C++之深浅拷贝
- 蛇形数组分析
- ActionBar
- windows可执行文件调用jar包执行java程序-toolsRun.bat
- View的属性值