memset 导致的一个段错误
原型:
void *memset(void *s, int c, size_t n);
解释:
memset :是 逐字节 拷贝,即n是指整个变量所占字节,在用于数组时一定要注意n不一定是 数组元素.
memset :用来给某一块内存空间进行赋值的.
段错误之处:
对于所赋值的变量,如果不定义,如何来空间,随机空间??? 所以memset所用对象必须先定义.
eg: 错误用法
B *b ; memset(b,0,sizeof(B));
如果未定义,尽管memset成功执行,但是会将后面的其它变量给置NULL了,导致:段错误
正确用法:
B *b = new B; memset(b,0,sizeof(B));在b所指的空间地址处进行赋值