标准仿C语言 memset、memcpy、memmove函数
前段时间,移植了C的网络加解密算法到C#,其中遇到很多问题,核心问题大多都是字节拷贝问题,今天有时间整理了一下相关的API,废话不多说直接贴源码:(值得注意的是memmove函数,支持数据重叠,详情参照http://blog.csdn.net/yujun_wu/article/details/4999565)
一> C++版
/*
* @brief: 将dst中当前位置后面的 count 个字节用 val 替换并返回 dst
* @param s - 数据内存的起始地址
* @param c - 替换后的值
* @param n - 要替换的长度
* @return 返回原数据首地址
*/
void* memset(void* s, int c, size_t n)
{
assert(s);
unsigned char* p = (unsigned char*)s;
while (n > 0)
{
*p++ = (unsigned char)c;
--n;
}
return s;
}
/*
* @brief: 用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话
,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。
但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同
* @par