我想将结构的动态数组存储为另一个结构中的成员变量。这是在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::vector
或std::array
。printf()
中还存在一个错误(未拼写为print()
):两个mem1
之一应为mem2
。