memset用法、作用、常见错误
2013-10-11 17:12
323 查看
函数介绍
void *memset(void *s, char ch, size_t n);函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法[1]。
常见错误
第一: 搞反了 ch 和 n 的位置.一定要记住如果要把一个char a[20]清零,一定是 memset(a,0,20);
而不是 memset(a,20,0);
第二: 过度使用memset,我想这些程序员可能有某种心理阴影,他们惧怕未经初始化的内存,所以他们会写出这样的代码:
第三: 其实这个错误严格来讲不能算用错memset,但是它经常在使用memset的场合出现
something*指针类型大小的的字节数,如果是32位,就是4字节。
自己理解:
memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, '/0', sizeof(a));
memset与strcpy的区别:(1)memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注 意如用sizeof(a),会造成b的内存地址溢出。(2)strcpy就只能拷贝字符串了,它遇到'/0'就结束拷贝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。
相关文章推荐
- memset用法与常见错误
- MySQL · 性能优化 · MySQL常见SQL错误用法
- MySQL · 性能优化 · MySQL常见SQL错误用法
- 避免常见的6种HTML5错误用法
- 避免常见的6种HTML5错误用法
- Json用法三个常见错误2 Javabean Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethod
- synchronized的用法以及常见的使用错误
- MySQL · 性能优化 · MySQL常见SQL错误用法
- PHP中的常见魔术方法功能作用及用法实例
- PHP中的常见魔术方法功能作用及用法实例
- memset的一个错误用法
- 避免常见的6种HTML5错误用法
- memset与memcpy用法,及作用
- MySQL · 性能优化 · MySQL常见SQL错误用法
- memset用法详解 1。void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。 2。例子 #include
- 指针的常见用法和错误总结
- PHP中的常见魔术方法功能作用及用法实例
- Java8中Optional的一些常见错误用法总结
- jsr 303 如何控制错误信息的顺序_及groups标记属性的作用和用法
- memset、memcpy、memmove的常见用法和区别,以及memcpy与strcpy的区别