私には意味をなさない奇妙な問題に遭遇しました。
次のように定義された API に (文字列を含む) 構造体があります。
typedef struct sNCharcb
{
char * pData;
int iDataLen;
}
tsNCharcb;
この構造体のディープ コピーを保存する必要があります。この構造体のコピーを作成するユーティリティ関数を作成しました。
inline sNCharcb rapi_strcpy(const sNCharcb &rapistr)
{
sNCharcb res;
res.pData = new char[rapistr.iDataLen];
strcpy(res.pData, rapistr.pData);
res.iDataLen = rapistr.iDataLen;
return res;
}
このユーティリティ メソッドを使用してこれらの "sNCharcb" 構造体のコピーを作成し、それらを保存して親オブジェクトの変数を参照します。
stored_sNCharcb = rapi_strcpy(sNCharcb_to_copy);
しばらくすると、これらの格納された値は魔法のように変更され、ランダムなガベージが含まれるようになります。これらの値が格納される親オブジェクトは常にスコープ内にあり、破棄されません。これらの値が時期尚早に消去される原因は何ですか?