我不認爲我已經掌握了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非常感謝。這是有益的和保險。 –