我是新來的圖書館,現在開始爲我的新項目開展探索工作。我想了解BOOST的scoped_ptr是如何工作的?到目前爲止,我們在所有代碼中都使用了原始指針,並且我主張使用SmartPointers來簡化內存管理。我們的編程不是純粹的C++語言,而是其集成的應用程序語言。例如,我們試圖瞭解如何將scoped_ptr初始化爲NULL,並將原始指針傳遞給應用程序API。考慮下面boost:scoped_ptr與使用char *作爲輸入類型的傳統C函數?
此代碼是從應用程序工具包中的API,它需要這樣
int SOME_API_FUNC(int obj, const char* prop, char** cValue);
論據我不能改變的API,因爲它沒有公佈。
現在參數cValue是我們希望使用智能指針的地方,這樣內存管理就會自動進行,因爲API會爲其動態分配一些內存並分配一個值並返回。
我們試圖與scoped_ptr的聲明像這樣
boost::scoped_ptr<char*> pcValue(new char*());
和API中使用類似
SOME_API_FUNC(obj, prop,&*cValue);
我的問題是,如果這cValue與的malloc API的內部分配的內部那麼會發生什麼情況scoped_ptr正在使用刪除?請問刪除正確清理內存?如何驗證內存是否正確清理?
您使用C的任何原因標籤爲C++問題?他們是不同的語言! – Olaf