我需要一個類(在C++ 11中),它存儲了幾個字段(包括一個緩衝區)。我在構造函數中使用了malloc()
,在析構函數中使用了free()
(我沒有碰到C/C++很長一段時間,所以我都記得)。C++緩衝區疼痛
接下來我記得(因爲崩潰)我需要實現一個拷貝構造函數和一個賦值操作符。現在,我有一個全屏的代碼,只有一個類有3個字段(其中之一是緩衝區)。
一個問題。
我應該使用什麼? (我被選擇量所迷惑 - std::vector
,std::array
,std::shared_ptr
,boost::scoped_ptr
並且可能是別的東西)。
功能,這緩衝區,我所尋找的是:
- 儘可能少的內存管理
- 擺脫這些拷貝構造函數和賦值操作符的
- 能力使用它爲void *(我必須將它傳遞給接受「void *」的函數)
- 訪問隨機讀取/寫入的能力(我可能需要從中得到一個隨機範圍並向其中寫入一個隨機範圍)
- 它分配在堆中(緩衝區可以相當大)
- 最好的一些標準設備的使用
你需要能夠複製或分配你的班級嗎? –
在C++代碼中使用'malloc'和'free'幾乎總是一個bug。此外,你不能「擺脫這些拷貝構造函數和賦值操作符」。它們是C++的許多基本方面之一。如果你不想使用它們,不要使用C++。 –
@KerrekSB是的。我想能夠複製我的課程。不過,我希望一些智能指針可以處理它。我希望他們分享指針和計數引用。但是,即使是直接複製內容也適用於我。 –