私が更新しているPre C++ 11/14コードベースがあります。C++ 14個のスタックに共有ポインタが割り当てられました
コードは、例えば、ほとんどelusivelyスタック割り当てを使用して、周りの人のポインタを渡します。この場合、
{
KlassX x;
KlassY y;
y.doThings(&x); //Holds the pointer to KlassX for later use
return mainLoop(); //Doesn't return until the program finishes
}
を、KlassYは* KlassXのためのメモリの割り当てについては何も知りません。この特定のアプリケーションでは安全ですが、KlassYが別の方法で使用された場合、shared_ptrを使用してポインタを保持しているポインタの割り当て解除を追跡しないため、「安全なコード」ではありません。
プログラムをヒープ割り当てに変更せずに、shared_ptrを使用するためにKlassYを実装したいと思います。スタック割り当て方式を使用しても安全な方法はありますか?KlassXにはshared_ptrを使用していますか?
重複している場合は申し訳ありませんが、私はかなりの量のグーグルを行い、この質問に対する回答を見つけることができませんでした。
これは安全なコードではないという考えをあなたに与えたことはありますか? 'KlassY'が' KlassX'へのポインターの所有権の幻想を持たず、ヌルポインターセーフである限り、これは完全に安全なコードです。 –
私が述べたように、この特定の使用状況では、安全です。しかし、私がいつかKlassYを拾い上げて全く別のプログラム環境に落としたいのであれば、それはもはや安全ではありません。 –