我在處理音頻的時候,因為獲取內容和使用內容不在同一個地方,怕發生記憶體泄漏,因此我想通過智能指標來管理一個uint8_t*的指標,請問如何才能正確使用這個shared_ptr,謝謝。
原本的程式是這樣:
int len = 10;
uint8_t* buff = new uint8_t[len];
memcpy(buff, src, len);
printf("%x", buff[i++]);
我的嘗試是這樣:
int len = 10;
shared_ptr<uint8_t*> buff(new uint8_t[10]);
memcpy(buff, src, len); //此行報錯,無法將buff轉成一個void*
printf("%x", buff[i++]); //此行也報錯,沒有與"[]"匹配的運算子
另外make_share也無法使用
請問這里只能指標該如何使用?
uj5u.com熱心網友回復:
shared_ptr好像不支持operator[],貌似c++17以后支持改用unique_ptr吧
//shared_ptr<uint8_t> buff(new uint8_t[10], default_delete<uint8_t[]>());
unique_ptr<uint8_t[]> buff(new uint8_t[10]);
memcpy(buff.get(), src, len);
printf("%x", buff[i++]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/141914.html
標籤:C++ 語言
下一篇:這個賦值怎么出問題了?
