У меня есть класс под названием message
. Здесь вы можете найти соответствующий фрагмент кода:Socket read() ing в функцию, которая возвращает указатель в C++
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);
Почему вы знаете, что это неправильно? текст является указателем байта, и функция 'getText()' возвращает его. Указывает ли он на местоположение в памяти во время вызова, которое пока не видно, поскольку вы не показывали нам, когда и где вы назначаете 'text' –