Я разработал небольшую вспомогательную функцию для класса модульного тестирования, которая берет мой vector<unsigned char>
и преобразует его обратно в const char *
. Я написал это, чтобы я мог передать его в макрос gtest ASSERT_STREQ
для простых сравнений. Вот оно:
const char * convertVecToChar(std::vector<unsigned char>& source)
{
std::vector<unsigned char>::size_type size = source.size();
char* data = (char*)malloc(sizeof(char) * (size + 1));
memcpy(data, &source[0], size);
data[size] = 0;
return data;
}
А вот пример того, как его называют:
ASSERT_STREQ("de", convertVecToChar(somevector));
Я полагаю, что это утечка, поскольку я звоню malloc
, но без звонка delete
дальше по дороге?
Существует ли более элегантный способ сделать это, который не предусматривает создание отдельной переменной const char *
для каждого вызова в методе теста ASSERT_STREQ
?
Большое спасибо заранее за все ответы.
Chris