您的位置:首页 > 其它

自己实现内存操作函数memset(),memcmp(),memcpy(),memmove()

2016-07-18 08:14 477 查看
1.memset()内存设置函数(初始化)

void *my_memset(void* dest, int c, size_t count)

{

assert(dest != NULL);

char *pdest = (char *)dest;

while (count-->0)

{

*pdest++ = c;

}

return dest;

}

2.memcmp()内存比较函数

int my_memcmp(const char* str1, const char* str2, size_t count)

{

assert(str1 != NULL&&str2 != NULL);

const char *pstr1 = str1;

const char *pstr2 = str2;

int result = 0;

while (count-- > 0)

{

if ((result=*pstr1++-*pstr2++) != '\0')

break;

}

if (result > 0)

result = 1;

else if (result < 0)

result = -1;

return result;

}

3.memcpy()内存拷贝函数

内存拷贝函数是出题率最高的,在实现时需注意内存覆盖的问题

void *my_memcpy(void* dest, const void* src, size_t count)

{

assert(dest != NULL&&src != NULL);

char* pdest =(char*) dest;

const char* psrc =(const char*) src;

if (psrc > pdest || pdest >= psrc + count)

{

while (count--)

*pdest++ = *psrc++;

}

else

{

while (count--)

{

*(pdest + count) = *(psrc + count);

}

}

return dest;

}

4.memmove()内存移动函数

内存移动函数的实现方法完全跟内存拷贝函数实现方法一样,但在使用中还是有细小差别的。但在这里我们就不详细论述他们的差别了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: