OpenVX安全关键应用开发指南
1. 指针与整数混淆问题及解决方案
在OpenVX开发中,当类型由属性常量暗示时,很容易混淆指针和整数,例如不清楚是要提供一个数字还是该数字的指针。为解决这个问题,可以创建模板,将定义属性的 vx_enum 映射到所需的类型,并将要求特定数据类型及其大小的机制隐藏在模板函数中。这种检查在编译时进行,要求属性作为常量传递,不能在运行时确定。不过,非常量属性标签的使用场景并不明确,所以这样做不会造成功能上的损失。在OpenVX的其他地方,通常也会传递常量,定义模板函数可以在编译时进行更多检查,且不会显著损失功能。
2. 引用数组的使用与安全处理
通用引用数组在导出和导入对象时会用到,但如果使用不当,可能会引发问题。为防止错误使用,建议将其使用限制在代码的特定位置。可以定义一个 VxRefArray 类,将所有可能不安全的操作集中处理。使用 std::vector 来存储引用,这样可以实现类型安全的函数,将 VxReference 派生类型及其使用方式放入数组并从中取出,同时确保在操作过程中跟踪引用计数。虽然类型检查是在运行时进行,但至少有了检查机制。 VxContext 类作为友元类,可以通过类型转换运算符访问底层的 vx_reference 和 vx_enum 数组,其他类则没有访问权限。
class VxRefArray
{
// Used to han
超级会员免费看
订阅专栏 解锁全文
24

被折叠的 条评论
为什么被折叠?



