我面临一个令人困惑的问题,我有一个函数返回一个字符数组,我尝试读取并打印出来,但输出似乎是垃圾值
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);
}
我有什么不对劲吗?
答案 0 :(得分:3)
如果没有进一步的细节,我怀疑get_ssp_IO(....)
看起来像这样:
.... get_ssp_IO(....) {
char ret[some_length];
....
return ret;
}
但是一旦函数返回,数组内存是未定义的。正如您使用的是C ++,您应该使用std::string
来代替所有内存管理问题。