应该以下代码运行后是pc_tmp填入9个空格吧??
但是实际情况却有些古怪,如上面的注释
char  * pc_tmp1;
i_len=9;
pc_tmp1=new char[i_len];  //我在调试态,看到pc_tmp中分配了远超过9个字符长度的空间,里面是乱字符
using namespace std;
string tt(pc_tmp1);
int ttt=tt.length() ;  //这段纯粹了是为了检验我是不是分配了9个长度,结果有时ttt=25,有时却又成了 17,实在是古怪
for (int i=0;i<i_len;i++)
pc_tmp1[i]=' ';  
循环完了之后,pc_tmp中是前面9个空格,然后后面一片乱字符.
实在是想破脑袋也没想出是为什么来??大侠们救个急了

解决方案 »

  1.   

    少了个'\0'字符当然会是这个样子。改成这样应该可以解决问题:
    char  * pc_tmp1;
    i_len=10;
    pc_tmp1=new char[i_len];
    pc_tmpl[9] = '\0';
      

  2.   

    trypc_tmp1=new char[i_len];
    memset(pc_temp1,0,i_len*sizeof(char));
    ....
      

  3.   

    同一楼上说的,new只是分配了内存空间,并不负责对其中的内容赋值。
    所以一般对char类型的new,大都应当初始化,这是基本的习惯。

    ZeroMemory(pc_tmpl. i_len);