EXPECT_CALL(mock_object, method(matchers))
.WiilRepeatedly(Return(new someClass()));
と書くと期待値をキャッシュしてしまうため、二重開放が発生してしまう。
そのため、
EXPECT_CALL(mock_object, method(matchers))
.WiilRepeatedly(ReturnNEW<somClass>()));
と書かなければならない。
もちろん、mock_objectにオブジェクト開放の責務がある場合、ReturnNewではダメ。
つうか、こんなテストコードを書かなければならないようなコードはファクトリークラスなどの一部の例外を除いて書いてはいけない。。。