用法注意 - AstroMen/Algorithm-DataStructure GitHub Wiki

memset是对字节进行操作

int array[5] = {1,4,3,5,2};
memset(array,1,5*sizeof(int)); // 注意
for(int k = 0; k < 5; k++)
  cout<<array[k]<<' ';
输出的结果就是:
16843009 16843009 16843009 16843009 16843009
  因为memset是以字节为单位就是对array指向的内存的5个字节进行赋值,每个都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了。
  所以用memset对非字符型数组赋初值是不可取的。
  例如:有一个结构体Some x,可以这样清零:
  memset( &x, 0, sizeof(Some) );
  如果是一个结构体的数组Some x[10],可以这样:
  memset( x, 0, sizeof(Some)*10 );