我是新来的图书馆,现在开始为我的新项目开展探索工作。我想了解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