【知识---c++中assert的使用及方法】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

代码中很多地方使用到了assert这个函数:

   IRuntime* runtime = createInferRuntime(gLogger);
    assert(runtime != nullptr);

    ICudaEngine* engine = runtime->deserializeCudaEngine(trtModelStream, size);
    assert(engine != nullptr);
    
    IExecutionContext* context = engine->createExecutionContext();
    assert(context != nullptr);

它是什么?

assert 是一个预处理宏,用于在运行时检查表达式是否为真。

如果表达式的结果为假(即 engine 指针为空),则它会触发一个断言失败,并在标准错误流中输出一条错误消息。

这通常是一个用于调试和验证程序假设的强大工具。

assert(runtime != nullptr);

runtime:这是一个指向 IRuntime 接口的指针,表示在之前的代码中通过 createInferRuntime 函数创建的 TensorRT 推理运行时对象。

assert(runtime != nullptr):
是一个预处理宏,用于在运行时检查表达式是否为真。

如果表达式的结果为假(即 runtime 指针为空),则触发断言失败,并在标准错误流中输出一条错误消息。

在这里,如果 runtime 指针为空,表示创建 TensorRT 推理运行时对象失败,断言将触发,程序将输出错误消息并中止执行。

这有助于及早发现并排除在程序运行时可能导致问题的情况。

assert(engine != nullptr);

engine:这是一个指向 ICudaEngine 接口的指针,表示在之前的代码中通过反序列化模型创建的 CUDA 引擎对象。

assert(engine != nullptr);

这是一个预处理宏,用于在运行时检查表达式是否为真。

如果表达式的结果为假(即 engine 指针为空),则触发断言失败,并在标准错误流中输出一条错误消息。

在这里,如果 engine 指针为空,表示创建 CUDA 引擎失败,断言将触发,程序将输出错误消息并中止执行。这样有助于及早发现并排除在程序运行时可能导致问题的情况。

assert(context != nullptr);

context:
这是一个指向 IExecutionContext 接口的指针,表示在之前的代码中通过创建 CUDA 引擎后生成的执行上下文对象。

assert(context != nullptr);

这是一个预处理宏,用于在运行时检查表达式是否为真。

如果表达式的结果为假(即 context 指针为空),则触发断言失败,并在标准错误流中输出一条错误消息。

在这里,如果 context 指针为空,表示创建 CUDA 引擎的执行上下文失败,断言将触发,程序将输出错误消息并中止执行。这有助于及早发现并排除在程序运行时可能导致问题的情况。


总结

断言的主要作用是在开发和调试阶段检查程序的内部一致性和正确性。

在正式部署中,可以根据需要删除或禁用这样的断言,以提高程序的性能。

相关推荐

  1. 知识---c++assert使用方法

    2024-01-22 18:10:01       54 阅读
  2. C++】C++std::nothrow使用方法

    2024-01-22 18:10:01       27 阅读
  3. Spring常见知识使用

    2024-01-22 18:10:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-22 18:10:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-22 18:10:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-22 18:10:01       87 阅读
  4. Python语言-面向对象

    2024-01-22 18:10:01       96 阅读

热门阅读

  1. ARM的一些基础知识

    2024-01-22 18:10:01       59 阅读
  2. arm寻址方式

    2024-01-22 18:10:01       60 阅读
  3. 每日OJ题_算法_二分查找①_力扣704. 二分查找

    2024-01-22 18:10:01       58 阅读
  4. udp丢包处理方法

    2024-01-22 18:10:01       59 阅读
  5. 设计模式-状态模式

    2024-01-22 18:10:01       56 阅读
  6. vue生命周期

    2024-01-22 18:10:01       63 阅读
  7. 正则表达式大全(汇总)

    2024-01-22 18:10:01       46 阅读
  8. 53-作业,二级联动,三级联动

    2024-01-22 18:10:01       52 阅读
  9. js 递归

    2024-01-22 18:10:01       59 阅读