Функция C++, возвращающая const char *

Я разработал небольшую вспомогательную функцию для класса модульного тестирования, которая берет мой vectorи преобразует его обратно в a 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в тестовом методе?

Заранее всем спасибо за ответы.

Крис

5
задан casperOne 7 September 2012 в 19:57
поделиться