carloscn / carloscn/structstudy
user01:实现库函数memmove(memmove implementation)
- Dominant language
- C
- Stars
- 4
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
### 问题描述
对于man手册中memcpy的接口,有一条这样的说明,https://man7.org/linux/man-pages/man3/memcpy.3.html
```
void *memcpy(void *restrict dest, const void *restrict src, size_t n);
NOTES:
Failure to observe the requirement that the memory areas do not
overlap has been the source of significant bugs. (POSIX and the
C standards are explicit that employing memcpy() with overlapping
areas produces undefined behavior.) Most notably, in glibc 2.13
a performance optimization of memcpy() on some platforms
(including x86-64) included changing the order in which bytes
were copied from src to dest.
This change revealed breakages in a number of applications that
performed copying with overlapping areas. Under the previous
implementation, the order in which the bytes were copied had
fortuitously hidden the bug, which was revealed when the copying
order was reversed. In glibc 2.14, a versioned symbol was added
so that old binaries (i.e., those linked against glibc versions
earlier than 2.14) employed a memcpy() implementation that safely
handles the overlapping buffers case (by providing an "older"
memcpy() implementation that was aliased to [memmove(3)]
```
memcpy对同一个buffer会出现内存覆盖的现象,请你实现memmove的逻辑,来解决同一个数组的内存覆盖问题。
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.