std::shared_ptrncnn::Net ncnnNet = std::make_sharedncnn::Net();
析构函数:ncnnNet->clear();ncnnNet.reset();ncnn::destroy_gpu_instance();
vhipe2zx1#
析构函数: ncnnNet->clear(); ncnnNet.reset(); ncnn::destroy_gpu_instance();
如果有pool_allocator = new ncnn::PoolAllocator(); ,需要pool_allocator->clear();再delete。
如果有 blob_vkallocator = new ncnn::VkBlobAllocator(vkdev); ,需要delete blob_vkallocator; 再delete。
如果有注册了custom op for vulkan ,并使用 compile_spirv_module() 函数进行编译glsl到spirv,然后 new ncnn::Pipeline(vkdev); 到 ncnn::Pipeline* 中,同样也需要注意按顺序delete。
wgmfuz8q2#
std::shared_ptrncnn::Net ncnnNet = std::make_sharedncnn::Net();析构函数: ncnnNet->clear(); ncnnNet.reset(); ncnn::destroy_gpu_instance();
全都没有用到,我是这样推理的
2条答案
按热度按时间vhipe2zx1#
detail | 详细描述 | 詳細な説明
std::shared_ptrncnn::Net ncnnNet = std::make_sharedncnn::Net();
析构函数: ncnnNet->clear(); ncnnNet.reset(); ncnn::destroy_gpu_instance();
如果有pool_allocator = new ncnn::PoolAllocator(); ,需要pool_allocator->clear();再delete。
如果有 blob_vkallocator = new ncnn::VkBlobAllocator(vkdev); ,需要delete blob_vkallocator; 再delete。
如果有注册了custom op for vulkan ,并使用 compile_spirv_module() 函数进行编译glsl到spirv,然后 new ncnn::Pipeline(vkdev); 到 ncnn::Pipeline* 中,同样也需要注意按顺序delete。
wgmfuz8q2#
detail | 详细描述 | 詳細な説明
std::shared_ptrncnn::Net ncnnNet = std::make_sharedncnn::Net();
析构函数: ncnnNet->clear(); ncnnNet.reset(); ncnn::destroy_gpu_instance();
如果有pool_allocator = new ncnn::PoolAllocator(); ,需要pool_allocator->clear();再delete。
如果有 blob_vkallocator = new ncnn::VkBlobAllocator(vkdev); ,需要delete blob_vkallocator; 再delete。
如果有注册了custom op for vulkan ,并使用 compile_spirv_module() 函数进行编译glsl到spirv,然后 new ncnn::Pipeline(vkdev); 到 ncnn::Pipeline* 中,同样也需要注意按顺序delete。
全都没有用到,我是这样推理的