套接字读取()到一个在C++中返回指针的函数中
Socket read()ing into a function that returns pointer in C++
我有一个名为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;
}
我需要直接读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; }
如果您只是将套接字描述符传递到您的message
中,这样它就可以做您的read
,那会更好一些:
int read(int sd) {
text.resize(header.dataSize);
return ::read(sd, &text[0], header.dataSize);
}
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量