TCHAR syspath[100];
  memset(syspath,0,100); 
 GetSystemDirectory(syspath,100);
  cout<<syspath;
请问memset这句有必要吗,我主要是担心由于syspath没有被填满,cout时找不到字符数组中为0的结束位。但事实上有没有这句cout都能正常显示,且每次结果有一样,没有因结束位不明确而产生不同。字符数组如不初始化,里面默认存的是什么,如何能标识字符串结束??cout<<int(syspath[x]); 输出的都是-52, -52什么意思

解决方案 »

  1.   

    memset有必要,里面的东西默认不知道是什么,最好加上
      

  2.   

    debug下初始化为0,release下不确定
      

  3.   

    不加的memset的话,DEBUG跟踪一下可能全部是“烫”字的,所以一定要初始化的。不然会出现问题的。
      

  4.   

    GetSystemDirectory
    If the function succeeds, the return value is the length, in TCHARs, of the string copied to the buffer, not including the terminating null character.
    这个函数不会拷贝最后一个0, 所以需要初始化一下,或者根据长度自己写最后一个0.
      

  5.   

    看操作
    如果确认后续操作相当于strcpy,是不必要memset的
    最节省开销的处理:xxx[0]='\0';//只处理第一个字符
      

  6.   

    如果你这代码是TCHAR syspath[100];全局变量就没问题,因为开机的时候已经自动初始化为0了一般.但是如果这在函数中可能就有问题,这是操作系统只是给你一个地址,这个内存地址可能被其它人用过,值也不确定,所以可能出问题,所以要初始化.
      

  7.   

    GetSystemDirectory最后会加0的,不过好的做法,还是自己也初始化一次,安全