Zep*_*ock 11 c c++ unique-ptr
要从void *CI 中的函数获取 a将执行以下操作(非常基本的示例):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
Run Code Online (Sandbox Code Playgroud)
使用时如何获得相同的结果std::unique_ptr<>?
Dee*_*doo 18
您需要指定自定义删除器才能使用voidasunique_ptr的类型参数,如下所示:
#include <memory>
#include <cstdlib>
struct deleter {
void operator()(void *data) const noexcept {
std::free(data);
}
};
std::unique_ptr<void, deleter> get_ptr(std::size_t size) {
return std::unique_ptr<void, deleter>(std::malloc(size));
}
#include <cstdio>
int main() {
const auto p = get_ptr(1024);
std::printf("%p\n", p.get());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |