1. memcpy函数的实现
首先对这个函数做一些说明。
#include <string.h>
void *memcpy(void *to, const void *from, size_t count)
函数memcpy()从from指向的数组向to指向的数组复制count个字符。如果两数组重叠,不定义函数的行为。
在C99中,to和from由restrict修饰。
先来看看微软的实现:
再来看看coreutils中的实现:
再来看Linux中实现:
各种考虑的实现
高质量C++/C编程指南里面的实现
还有BSD的实现
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/bcopy.c
需要考虑的问题有:
1.写任何程序都能反映出你的代码风格.
2.考查你是否注意到,要拷贝的源,即const void* src,应该是用const的,避免有意或无意的修改.
3.考查你,不应该直接对src和dst指针进行类似++或--之类的操作,而应该另外申请对应变量用于此操作.
4.指针的类型转化问题,原始参数应该是void *的,你具体操作的时候,应该是转化为某种具体的类型,此处用char比较适合.
5.注意要判断源src是否和dest重复,如果重复,直接返回或返回错误.
2. memset函数实现
微软的实现
另一种实现
3. strcpy函数实现
高质量C++/C编程指南里面的实现
4. 怎么实现断言