问题描述:写一个函数,完成内存之间的拷贝
- #include<iostream>
- using namespace std;
- // 返回void *,可支持链式操作
- void *memcpy_(void *dest, const void *source, unsigned int c_length)
- {
- assert(dest && source);
- if(dest==source)return dest;
- char *p1=static_cast<char*>(dest);
- const char *p2=static_cast<const char*>(source);
- if(p1>p2 && p1<p2+c_length)
- {
- //存在内存重叠区域
- for(int i=c_length-1; i>=0; i--)
- p1[i]=p2[i];
- }
- else
- {
- for(int i=0; i<c_length; i++)
- p1[i]=p2[i];
- }
- return dest;
- }
- int main()
- {
- char source[]="Hello, My name is shark/n";
- cout<<strlen(source)<<endl;
- char dest[30];
- memcpy_(&dest, &source, strlen(source));
- cout<<dest<<endl;
- getchar();
- return 0;
- }