Вот так выглядет вырезанный код,
readLine() возращает new char[length] . Потом собираюсь освободить память и все крашиться, при этом если не удалять (убрать delete [] ) то будет утечка.
В чем может быть ошибка
void run(SocketListener* _this) {
char *ret = NULL;
try {
for (;;) {
ret = _this->readLine(); // вернет new char[len];
if (ret == NULL) break;
std::cout << ret;
_this->getSocket()->send(response, lenResponse);
delete[]ret; // !!!!!!!!!!!!!!! ЛОМАЕТСЯ
}
// } while (reads_bytes > 0 /*&& len==reads_bytes*/);
}
catch (std::runtime_error & err) {
//std::cout << "ERROR "<<err.what() << std::endl;
if (ret != NULL) delete[]ret;
}
delete[] buf;
}
char * _Interface_Socket::readLine()
{
std::string line = "";
char buf[1];
try {
do {
int reads_bytes = socket->recv(buf, 1);
if (reads_bytes < 1) return NULL;
line.push_back(buf[0]);
} while (buf[0] != '\n');
}
catch (std::runtime_error &err) {
status = false;
return NULL;
}
char *response = new char[line.size()];
std::strcpy(response, line.c_str());
return response;
}