memset函数
原型:void *memset(void *s, int ch, size_t n);
作用:将s所指向的内存中的前n个字节的内容全部设置为ch指定的ASCII值,这个函数通常为新申请的内存做初始化工作。一般用于结构体和数组的初始化。
- memset中的第三个参数一定要使用sizeof操作符,因为每个系统下对类型长度的定义可能不一样。
- memset中的第一个参数一定要是一个已知的、已经被分配内存的地址,否则会出错。
- 对于单字节数据类型(char)可以初始化为任意支持的值,都没有问题,但是对于非多字节数据类型只能初始化为0,而不能初始化成别的初值,否则容易出错。
memset的效率很高,比手动赋值要高的多,比bzero也要高,尤其大数组的情况。
我是这样实现的:
void* _memset(void* dst,int val, size_t count)
{
assert(dst!=NULL);
char* tmpdst = (char*)dst;
while(count--)
{
*tmpdst = (char