我不认为我已经掌握了shared_ptr
。如何shared_ptr <T>访问T的元素或功能
示例代码:
shared_ptr<ofstream> logger;
int main(){
logger = make_shared<ofstream>(new ofstream("ttt.txt"));
*logger <<"s";
return 0;
}
错误1个错误C2664: '的std :: basic_ofstream < _Elem,_Traits> :: basic_ofstream(常量字符*,性病::的ios_base ::用于openmode,INT)' :不能从转换参数1 '的std :: basic_ofstream < _Elem,_Traits>' 到 '为const char *' C:\程序文件(86)\微软的Visual Studio 10.0 \ VC \包括\ xxshared 13
被修改:
[
In the mean time, if I wanna close the ofstream while some crashes happened.
How can I do it?
I mean if shared_ptr release the memory without closing the file.
There would be problems.
]
我不知道如何做到这一点。或者,也许这完全是无稽之谈。希望任何人都能抛出一个想法或指出我对shared_ptr
的理解中缺乏的部分。
感谢您的回答。但是,make_shared和shared_ptr(new T())有什么区别; –
@ChrisSu:区别在于你不必自己使用'new'。这有两个好处:(1)在初始化共享指针之前没有导致内存泄漏的异常的危险; (2)'make_shared'效率更高,因为它可以在单个分配中为对象和共享控制结构分配内存,如果您自己分配对象,则需要两个内存。 –
@MikeSeymour非常感谢。这是有益的和保险。 –