简单粗暴直面实现一个Memcpy函数
来源:互联网 发布:linux回到根目录命令 编辑:程序博客网 时间:2024/06/07 08:22
//方法一:不考虑内存重叠
void
*
memcpy
(
void
*dest,
void
*src,
size_t
size)
{
if
(dest == nullptr || src == nullptr)
return
nullptr;
void
*result = dest;
while
(size--)
{
*(
char
*)dest = *(
char
*)src;
dest = (
char
*)dest+1;
src = (
char
*)src+1;
}
return
result;
}
//方法二:考虑内存重叠(类似于memmove)
void
*
memcpy
(
void
*dest,
void
*src,
size_t
size)
{
if
(dest == nullptr || src == nullptr)
return
nullptr;
void
*result = dest;
if
(dest < src || (
char
*)src+size < (
char
*)dest)
//没有内存重叠
{
while
(size--)
{
*(
char
*)dest = *(
char
*)src;
dest = (
char
*)dest+1;
src = (
char
*)src+1;
}
}
else
//有内存重叠
{
dest = (
char
*)dest+size-1;
src = (
char
*)src+size-1;
while
(size--)
{
*(
char
*)dest = *(
char
*)src;
dest = (
char
*)dest-1;
src = (
char
*)src-1;
}
}
return
result;
}
0 0
- 简单粗暴直面实现一个Memcpy函数
- 实现一个Memcpy函数
- 简单粗暴理解map函数
- C++面试--实现一个Memcpy函数
- 简单粗暴实现Zxing二维码
- 一个简单粗暴的屏幕适配
- 规范化理论-函数依赖-范式-简单粗暴
- 简单粗暴的so加解密实现
- 简单粗暴的so加解密实现
- 简单粗暴的so加解密实现
- 简单粗暴的so加解密实现
- JS简单粗暴地实现浅克隆
- ibatis 实现分页查询 简单粗暴
- memcpy函数的实现
- memcpy函数实现
- memcpy函数内部实现
- 【转】实现memcpy函数
- memcpy函数实现
- Linux内核分析 实验二:完成一个简单的时间片轮转多道程序内核代码
- JAVA数据结构---单链表
- Matlab人脸检测方法(Face Parts Detection)详解
- JVM是什么?
- HDU1978 记忆化搜索
- 简单粗暴直面实现一个Memcpy函数
- Linux Mint 17.2 文本编辑器中文乱码问题
- C++设计模式之桥接模式
- Fiddler(二) - 使用Fiddler做抓包分析
- poj1020 dfs
- Jenkins+Gradle实现android开发持续集成、打包
- C++编码规范
- 查找算法3-2
- 141. Linked List Cycle