-1

我面临一个令人困惑的问题,我有一个返回字符数组的函数我尝试读取并打印出来,但输出似乎是垃圾值

char  *ssl;
ssl = router_con.get_ssp_IO('1',this->no_io_l1);

for(int qq=0;qq<this->no_io_l1;qq++)
{ std::cout<<ssl[qq]<<"\n";
}

get_ssp_IO 函数如下

char*  TCP_IP_Connection::get_ssp_IO(char level,int id)
{
int ctr,ss=0;
char sspi[id];
for(int a=0,ctr=0;a<this->len;a++)
  {
if(this->data[a]=='?')
{
    do
    {
        a++;
    }while(this->data[a]!='\n');
}
else if(this->data[a]==' ')
      {
     ctr++;

        if(ctr==3)
       {
            sspi[ss]=this->data[a+1];

            ctr=0;
            ss++;
       }

       }

    }
  return(sspi);
}

我做错了什么吗?

4

1 回答 1

3

没有进一步的细节,我的怀疑是get_ssp_IO(....)看起来像这样:

.... get_ssp_IO(....) {
    char ret[some_length];
    ....
    return ret;
}

但是一旦函数返回,数组内存是未定义的。正如您在 C++ 中一样,您应该std::string改用它,这将使您摆脱所有内存管理问题。

于 2013-03-19T13:00:01.777 回答