main---程序主入口
mainV2---
1,类,在主程序main建立对象并运行
2,ModuleManager---模块管理器类,被mainV2创建使用。
2,InferV1---推理模块类,被ModuleManager创建使用,析构函数里须要释放cuda资源。
情况1:
ModuleManager模块管理器在mainV2.cpp内实现,退出程序时正常释放cuda资源:
program 'MainV2' End.
moduleId_: A176-6 ,Infer_DeInit start
moduleId_: A176-6 ,Infer_DeInit end
moduleId_: A176-5 ,Infer_DeInit start
moduleId_: A176-5 ,Infer_DeInit end
moduleId_: A176-4 ,Infer_DeInit start
moduleId_: A176-4 ,Infer_DeInit end
program [main_grade:1] end.
情况2:
ModuleManager模块管理器在mainV2.h内实现,退出程序时无法释放cuda资源,报错:
program 'MainV2' End.
program [main_grade:1] end.
moduleId_: A176-6 ,Infer_DeInit start
pure virtual method called
terminate called after throwing an instance of 'nvinfer1::CudaRuntimeError'
what(): driver shutting down
Aborted (core dumped)
立贴,方便回查。
关于析构函数的执行时机
于 2022-03-18 10:15:32 首次发布