C++函数返回const char*

Mr *_*ris 5 c++ string malloc pointers const

我为单元测试类开发了一个小辅助函数,它将我的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;
}
Run Code Online (Sandbox Code Playgroud)

这是一个被称为的例子:

ASSERT_STREQ("de", convertVecToChar(somevector));
Run Code Online (Sandbox Code Playgroud)

我认为这是在我打电话时漏水malloc,但是没有delete进一步打电话的话?

有没有更优雅的方法来执行此操作,这不涉及const char *每次ASSERT_STREQ在测试方法中调用时创建单独的变量?

非常感谢所有回复.

克里斯

hmj*_*mjd 12

返回a std::string而不是char*(malloc(),或者new,不需要的):

std::string convertVecToChar(std::vector<unsigned char>& source)
{
    return std::string(source.begin(), source.end());
}
Run Code Online (Sandbox Code Playgroud)

并使用:

ASSERT_STREQ("de", convertVecToChar(somevector).c_str());  
Run Code Online (Sandbox Code Playgroud)