arrayfire,指针和c ++

问题描述 投票:-1回答:1

我一直在尝试以程序方式生成arrayfire数组的数组。过去与其他对象打交道时,我可以这样做:

className * listName = (className*)malloc(numOfObjects*sizeOf(className))

className ** listName = (className**)malloc(numOfObjects*sizeOf(className*))

,然后使用for循环分配列表中的所有内容,并在完成后将其删除。

但是,这不适用于arrayfire。我试图做

af::array *Kernels; 
Kernels = (af::array*)malloc(Count*sizeof(af::array)); 

for(int i = 0; i < Count; i++) {
    Kernels[i] = af::range(i); 
}

我稍后致电:

free Kernels

此代码可以编译,但是在运行时会崩溃。这是我崩溃时得到的:

引发'af :: exception'实例后调用终止what():ArrayFire异常(函数不支持此数据类型:204):在函数af_err中af_release_array(af_array)在文件src / api / c / array.cpp:194中参数0的类型无效

在函数af :: array&af :: array :: operator =(const af :: array&)在文件src / api / cpp / array.cpp:771中中止(核心已弃用)

我正在寻找正确的语法来完成我想做的事情,或者寻找另一种方法。我已经在Google周围搜索了很多,但是没有找到我想要的东西。

谢谢。

c++ memory-management arrayfire
1个回答
0
投票

所以看来我终于得到了解决。似乎使用这种方式:std::vector<af::array> Kernels;为我提供了我想要的所有功能。事实证明,具有双指针可以编译,但是arrayfire中的函数并未构建为处理af :: array *对象指针。

© www.soinside.com 2019 - 2024. All rights reserved.