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)