我在Qt上玩套接字编程。我从服务器套接字读取char数组作为客户端套接字并将结果作为char指针返回。
char* zgr_socket::sendMessage(){
char buffer[5];
while(1){
bzero(buffer,2);
n = read(sockfd,buffer,2);
if (n < 0){ }
close(sockfd);
return buffer;
}
}
我正在尝试从此方法中获取生成的char数组
void MainWindow::on_pushButton_2_clicked()
{
char* returnedChar = mySocket->sendMessage();
std::string aString(returnedChar);
QString myQString = QString::fromStdString(aString);
ui->label1->setText(myQString);
}
无论我尝试过什么,我都无法获得正确的char数组。当我调试return buffer
行时,它会返回正确的数组,但在某种魔法之后,我会在aString
变量中得到任意值。请问有人能看到原因吗?
答案 0 :(得分:2)
返回指向char buffer[5];
的指针,除了缓冲区是函数的局部变量,因此在函数退出后它不再存在。你现在有一个悬垂的指针。尝试从函数而不是string
返回char*
,并将字符串作为return语句的一部分创建。
答案 1 :(得分:-1)