Bri*_*ian 2 c++ smart-pointers auto-ptr shared-ptr
我正在尝试使用智能指针,如auto_ptr,shared_ptr.但是,我不知道如何在这种情况下使用它.
CvMemStorage *storage = cvCreateMemStorage();
... use the pointer ...
cvReleaseMemStorage(&storage);
Run Code Online (Sandbox Code Playgroud)
我不确定,但我认为存储变量只是一个malloc的内存,而不是C++类对象.有没有办法使用智能指针存储变量?
谢谢.
shared_ptr允许您指定自定义解除分配器.但是,查看文档cvReleaseMemStorage()没有正确的表单(void f(T*)),您需要一个包装器:
void myCvReleaseMemStorage(CvMemStorage* p) {
cvReleaseMemStorage(&p);
}
shared_ptr<CvMemStorage> sp(cvCreateMemStorage(), &myCvReleaseMemStorage);
Run Code Online (Sandbox Code Playgroud)