Почему этот класс неполный? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему этот класс неполный? [закрыто]

Сообщение Anonymous »

Уже несколько лет, когда у меня есть время, я работаю над C++-клиентом для Basex. Весь функционал, описанный в протоколе сервера, работает. Единственная проблема заключается в том, что после того, как я ввел std::unique_ptr, возникает утечка памяти, о которой сообщается после закрытия программы:

двойное освобождение или повреждение (fasttop)

Код: Выделить всё

Address 0x6c849f0 is 0 bytes inside a block of size 120 alloc'd
at 0x48402AC: operator new(unsigned long) (/builddir/build/BUILD/valgrind-3.26.0-build/valgrind-3.26.0/coregrind/m_replacemalloc/vg_replace_malloc.c:488)
by 0x4862B54: std::__detail::_MakeUniq::__single_object std::make_unique(std::shared_ptr&, std::__cxx11::basic_string const&) (/usr/include/c++/15/bits/unique_ptr.h:1084)
by 0x48607E8: BasexCpp::BasexClient::Query(std::shared_ptr, std::__cxx11::basic_string const&) (/home/bengbers/Thuis/C_CPP_Werkbank/libBasexCpp/src/BasexClient.cpp:114)
by 0x4860785: BasexCpp::BasexClient::Query(std::__cxx11::basic_string const&) (/home/bengbers/Thuis/C_CPP_Werkbank/libBasexCpp/src/BasexClient.cpp:110)
by 0x400F48: main (/home/bengbers/Thuis/C_CPP_Werkbank/libBasexTest/src/libBasexTest.cpp:55)
Прочитав несколько тем, я понял, что это сообщение об ошибке часто вызвано тем, что вызываемый класс является неполным. И если я правильно интерпретирую вывод valgrind, это должен быть класс BasexSocket.
Это заголовок этого класса. Я не вижу, какой тип здесь не определен должным образом. И после проверки я также не нашел ни одной функции, не имеющей тела.

Код: Выделить всё

#ifndef BASEXSOCKET_H_
#define BASEXSOCKET_H_

#includes ....
#include 

namespace BasexCpp {
using namespace std;

typedef std::vector < std::vector < std::byte >> VectOfByteVect;
typedef std::vector < std::byte > ByteVect;

const auto DOUBLE_00 = 0x00;
const auto DOUBLE_FF = 0xff;

class
BasexSocket {
public:
explicit
BasexSocket (const string, const string, const string, const string);
~ BasexSocket ();

BasexSocket (const BasexSocket &) = delete;
BasexSocket & operator= (const BasexSocket &) = delete;

int get_Socket () const;
bool wait ();

int readSocket (string & sockResponseString);
ssize_t writeData (const string & input);
ssize_t writeData (const ByteVect & input);
ssize_t writeData (const char *input);
int writeByte (unsigned char rawNum);

protected:
static ByteVect  decode (const ByteVect & encoded);
int Master_sfd;

BasexSocket & CreateSocket (string, string);
BasexSocket & Authenticate (string, string);
};

string md5_basex (const string & content);
int set_nonblock_flag (int desc, int value);

string md5_pwd (string rts, string user, string passwd);
void StringSplit (vector < string > &strings, string input, const char &sep);

}

#endif /* BASEXSOCKET_H_ */
Как узнать, что является причиной неполноты?

Подробнее здесь: https://stackoverflow.com/questions/798 ... incomplete
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»