は、私は私のvector<unsigned char>
を取り、バックconst char *
に変換ユニットテストクラスの小さなヘルパー関数を、開発しました。私はこれを書いたので、簡単な比較のためにgtestのASSERT_STREQ
マクロに渡すことができます。ここでは、次のとおりです。C++を返す関数のconstのchar *
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
を呼び出すことなく、推測しますか?
ASSERT_STREQ
をテストメソッド内で呼び出すたびに別のconst char *
変数を作成する必要はありません。すべての応答を事前に
ビッグ感謝。
クリス
'無料()' ')(' mallocの後に、ではない 'DELETE'を使用してください。興味深い質問の場合は – hmjd
+1です。私は本当に答えはありません。これは単なる単体テストのための巨大なハックのようだ。あなたは 'ASSERT_VECEQ'の作成を検討しましたか?また、単体テストでメモリリークを気にしないでください。 –
さて、ありがとう、私に知らせてくれてありがとう。 –