當函數需要char *時,您可以傳入一個shared_ptr嗎?shared_ptr原始指針參數
我正在閱讀整個文本文件(長度= 100),並希望將char存儲到char []數組中。我曾經用簡單的方式是這樣的:
ifstream dictFile(fileName);
size_t fileLength = 100;
char* readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer, fileLength);
//processing readInBuffuer..............
delete[] readInBuffer;
dictFile.close();
當然有,如果有異常的刪除[]語句之前拋出內存泄漏。我想知道是否可以使用 shared_ptr readInBuffer(new char [fileLength]); 但函數原型
讀取(字符* S,streamsize可N)
不會接受一個智能指針作爲輸入?任何技巧?
編輯:我想寫的東西是這樣的:
shared_ptr<char[]> readInBuffer(new char[fileLength]);
dictFile.read(readInBuffer.get(), fileLength);
但它不會編譯。
可能重複[從共享\ _ptr獲取正常ptr?](http://stackoverflow.com/questions/505143/getting-a-normal-ptr-from-shared-ptr) –
您已擁有部分在你的問題中的答案 - 一個普通的指針沒有'get()'方法,但是一個智能指針可以做到,它完全符合你的要求。 –
'shared_ptr'不夠智能來管理數組。不過,'unique_ptr'是,如果你給它一個定製的刪除器。 –