gpt4 book ai didi

c++ - 套接字读取()进入一个在C++中返回指针的函数

转载 作者:行者123 更新时间:2023-11-28 06:28:34 24 4
gpt4 key购买 nike

我有一个名为message 的类。在这里你可以找到相关的代码:

class message
{
private:
HeaderType header;
// Message text
byte * text;

public:
~message();
byte * getText();
...};

/*
* Destructor
*/
message::~message(){
if (header.ack == false) free (text);
}

/*
* getText
*
* Returns pointer to text
*/
byte * message::getText(){
return text;
}

我需要直接读入文本。因此,我创建了上面的函数 message::getText(),它返回指向文本的指针。然后,我读入了这个函数。我知道,这是错误的。谁能告诉我为什么?

read(receive_socket,m.getText(), header.dataSize);

最佳答案

谁负责维护这些数据?我看到了一个 free(应该是一个 delete[])但是我在任何地方都没有看到一个 new。您只是返回一个未初始化的指针吗?

这是 vector 的一个很好的用例:

class message
{
private:
HeaderType header;
// Message text
std::vector<char> text;
};

std::vector<char>& message::getText() { return text; }

如果您只是将套接字描述符传递到您的消息中,这样会更好一些,这样它就可以执行您的读取:

int read(int sd) {
text.resize(header.dataSize);
return ::read(sd, &text[0], header.dataSize);
}

关于c++ - 套接字读取()进入一个在C++中返回指针的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28089269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com