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所指的空间地址处进行赋值

  

 

posted @ 2019-09-11 18:19  uagvdu  阅读(762)  评论(0编辑  收藏  举报