void * memset(void * s, int c, size_t count)
{
void *xs = s;
size_t temp;
if (!count)
return xs;
c &= 0xff;
c |= c << 8;
c |= c << 16;
if ((long) s & 1)
{
char *cs = s;
*cs++ = c;
s = cs;
count--;
}
if (count > 2 && (long) s & 2)
{
short *ss = s;
*ss++ = c;
s = ss;
count -= 2;
}
temp = count >> 2;
if (temp)
{
long *ls = s;
for (; temp; temp--)
*ls++ = c;
s = ls;
}
if (count & 2)
{
short *ss = s;
*ss++ = c;
s = ss;
}
if (count & 1)
{
char *cs = s;
*cs = c;
}
return xs;
}
memset的源代码(有人说)
最新推荐文章于 2025-12-10 00:15:00 发布
本文详细解析了memset函数的实现原理及内部运作流程,通过逐行分析源代码来展示如何使用该函数来设置内存块中的每个字节为指定值。特别关注了不同数据类型下memset的高效实现方式。
&spm=1001.2101.3001.5002&articleId=6313725&d=1&t=3&u=054c543278be427d8c3b8d902f508261)
515

被折叠的 条评论
为什么被折叠?



