设置存储器若干单元为相同的字节
用一个长整型数的低字节设置一段存储区域。
程序代码
typedef char size_t;void *base_memset(void *s, long c, size_t n);void *base_memset(void *s, long c, size_t n)
{size_t k,limit,cnt=0;unsigned long *slong=s;unsigned char *schar;k=sizeof(unsigned long);limit=n/k;for(cnt=0;cnt<limit-1;cnt+=2){slong[cnt]=c;slong[cnt+1]=c;}for(;cnt<limit;cnt++)slong[cnt]=c;if(n%k!=0){cnt=n/k*k;schar=s+n/k*k;while(cnt<n){*schar++=(unsigned char)c;cnt++;}}return s;
}
void main()
{size_t n=5;void *ptr=0x40;long c=0x98765434;void *p;c=c<<24|(c<<24)>>8|(c<<24)>>16|(c<<24)>>24; //4个字节都是低字节p=base_memset(ptr, c, n);while(1);
}