更新时间:2021-03-18 GMT+08:00
分享

内存管理(C语言)

接口使用要点

  • 通过HIAI_DMalloc接口申请内存,关于内存管理,请注意以下要点
    • 申请自动释放内存,用于跨侧数据传输时,如果是智能指针,由于Matrix框架自动释放内存,所以智能指针指定的析构器必须是空的;如果非智能指针,则Matrix框架自动释放。
    • 申请手动释放内存,用于跨侧数据传输时,如果是智能指针,则需要指定析构器为HIAI_DFree;如果非智能指针,则数据发送完成后需要调用HIAI_DFree释放内存。
    • 申请自动释放内存时,调用SendData接口用于跨侧数据传输后,不允许读写内存中的数据。
    • 申请手动释放内存时,如果调用SendData接口用于跨侧数据传输时,在内存释放前,不允许修改内存中的数据,但是可以读取内存中的数据;如果调用SendData接口用于同侧数据传输时,在内存释放前,可以读写内存中的数据。
    • 申请自动释放内存,对于该内存中的数据,不允许多次调用SendData接口发送数据。
    • 申请内存后,调用SendData接口用于跨侧数据传输时,只能从起始地址处发送数据,不可截取该内存中的某一段数据发送,否则会失败。
  • 如果调用HIAI_DVPP_MAlloc接口申请内存,用于Device到Host的数据传输时,由于HIAI_DVPP_MAlloc没有自动释放标签,所以一定需要调用HIAI_DVPP_DFree接口手动释放内存。如果使用智能指针存放申请的内存地址, 必须指定析构器为HIAI_DVPP_DFree。

跨侧数据传输是指Host->Device或Device->Host的数据传输。

同侧数据传输是指Host->Host或Device->Device的数据传输。

分享:

    相关文档

    相关产品