참조 계산을 위해 아래 예제 코드 에서처럼 std :: tr1 :: shared_ptr을 사용하는 것이 안전하고 올바른가요? ,참조 계산을위한 내부 메커니즘으로 std :: tr1 :: shared_ptr 사용
struct fclose_deleter
{
void operator()(FILE* f)
{
if (f)
{
std::fclose(f);
}
}
};
다음 :
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