内存拷贝is_overlap与complain3是啥

时间:2008-05-09 21:04:26   来源:论坛整理  作者:  编辑:chinaitzhe

有一道面试题是:写一个函数,功能:完成内存之间的拷贝

memcpy source code:
270 void* memcpy( void *dst, const void *src, unsigned int len )
271 {
272 register char *d;
273 register char *s;
27
275 if (len == 0)
276 return dst;
277
278 if (is_overlap(dst, src, len, len)) //请问这个if语句是什么函数 我找了半天没找到is_overlap()与
279 complain3("memcpy", dst, src, len);// complain3()这两个函数的相关信息
280
281 if ( dst > src ) {
282 d = (char *)dst len - 1;
283 s = (char *)src len - 1;
284 while ( len >= 4 ) {
285 *d-- = *s--;
286 *d-- = *s--;
287 *d-- = *s--;
288 *d-- = *s--;
289 len -= 4;
290 }
291 while ( len-- ) {
292 *d-- = *s--;
293 }
294 } else if ( dst < src ) {
295 d = (char *)dst;
296 s = (char *)src;
297 while ( len >= 4 ) {
298 *d = *s ;
299 *d = *s ;
300 *d = *s ;
301 *d = *s ;
302 len -= 4;
303 }
304 while ( len-- ) {
305 *d = *s ;
306 }
307 }
308 return dst;
309 }

is_overlap与complain3是啥??????????
网友回复:在CSND看到这个源码

想问下 什么时候 dst src 这两个指针指向的内存会叠加 ???
关键字:内存,拷贝,overlap,complain,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面