リファレンスカウントのために、以下のサンプルコードのようにstd :: tr1 :: shared_ptrを使用するのは安全で正しいですか? (これは、単に特定のサンプルで、クラスではなくFILE *の)*(無効何かを含めることができます)リファレンスカウントの内部メカニズムとしてstd :: tr1 :: shared_ptrを使用
class File
{
public:
File(const char* path, const char* mode) :
_refcount(new int(0))
{
this->_file = fopen(path, mode);
}
~File()
{
if (this->_refcount.unique())
{
if (this->_file != NULL)
{
fclose(this->_file);
}
}
}
int write(void* buff, size_t size)
{
fwrite(buff, size, 1, this->_file);
}
private:
FILE* _file;
std::tr1::shared_ptr<int> _refcount;
};
どのような意味で安全ですか?メモリは安全ですか?スレッドセーフ? – kennytm
@KennyTMはい、メモリ安全でスレッドセーフで、他の観点から見てください。 (私はそれがスレッドセーフではないと思う、多分あなたはそれが固定する方法を説明することができます) –
私はそれがスレッドセーフではないと言っていない;)しかし、私はジェームズのソリューションのように明示的なref-カウンタ。 – kennytm