山寨版memcpy , memmove
1: void*
2: memcpy ( void* dst, void* src, size_t len )
3: {
4: size_t i = 0 ;
5: if((long)dst % sizeof(long) == 0 &&
6: (long)src % sizeof(long) == 0 &&
7: len % sizeof(long) == 0 ){
8: long *d = dst ;
9: const long *s = src ;
10: for(i=0;i<len/sizeof(long);++i){
11: d[i] = s[i] ;
12: }
13: }else{
14: char *d = dst ;
15: const *s = src ;
16: for(i=0;i<len;++i){
17: d[i] = s[i] ;
18: }
19: }
20: return dst ;
21: }
1: void*
2: memmove ( void* dst, void* src, size_t len )
3: {
4: size_t i = 0 ;
5: if((long)dst < (long)src){
6: return memcpy(dst, src, len) ;
7: }
8:
9: if((long)dst % sizeof(long) == 0 &&
10: (long)src % sizeof(long) == 0 &&
11: len % sizeof(long) == 0){
12: long *d = dst ;
13: const long *s = src ;
14: for(i=len/sizeof(len);i>0;--i){
15: d[i-1] = s[i-1] ;
16: }
17: }else{
18: char *d = dst ;
19: const char *s = src ;
20: for(i=len;i>0;--i){
21: d[i-1] = s[i-1] ;
22: }
23: }
24: return dst;
25: }