我想将结构的动态数组存储为另一个结构中的成员变量。这是在main中给出我的示例的使用构造函数的正确方法吗?

编辑
我更正了代码中的一些明显错误(当时是上午6点)。我还向B添加了另一个成员,以查看push_back是否仍然正确。我知道使用向量进行动态内存将使我的生活容易得多,但是我需要这样做,因为这些都是最后要与推力:: device_vector一起使用的结构。

struct A
{
    float mem1;
    int mem2;
};
struct B
{
    A * Aarr1;
    A * Aarr2;
    B(A * a1, A * a2): Aarr1(a1), Aarr2(a2){}
};
int main()
{
    A * test = new A[5];
    A * test2 = new A[10];
    vector<B> btest;
    btest.push_back(B(test, test2));
    for(int i=0; i<5; i++)
        printf("mem1: %f, mem2: %i \n", btest[0].Aarr[i].mem1, btest[0].Aarr[i].mem2);
}

最佳答案

孤立地看,构造函数很好。但是,代码还有许多其他问题。

就目前而言,由于数组从未被释放,因此您的代码正在泄漏内存。

您可能要考虑从使用C数组转移到std::vectorstd::array

printf()中还存在一个错误(未拼写为print()):两个mem1之一应为mem2

10-04 16:36