GTest/GMock を使用して非仮想関数をモックする必要があるという要件があります。そのため、その関数をラップして、テスト スイートの "tst_def" ファイルにリンクしました。ラップされた関数の場合、整数は参照によって渡され、ラップされた関数内の任意の値をこの整数に設定すると、実行中にテストスイートが「メモリ破損でクラッシュ」します (セグメンテーション違反)。
重要な観察:
このクラッシュは、ラップされた関数内の整数に、作成時に割り当てられたものと同じデフォルト値を設定した場合には発生しませんが、他の値を割り当てた場合にのみクラッシュします。
編集:
このラッパー関数に渡される value1 の初期値が 0 であるとします。
extern "C" {
int __wrap_function(int &value1)
{
value1 = 3; //crashes
value1 = 0; //didnt crash
return 0;
}
}