我正在并行化代码,因此使用结构parallel_vector(ppl)。问题与标准的std :: vector ...
相同我首先构建一个指向结构的指针向量。结构非常庞大,原始类型的成员以及巨大的原始类型数组(23000个元素)。
我为这个结构实现了一个深拷贝复制构造函数。
然后,我循环访问此列表中的元素。
for (int ii=0; ii < nbBlocks; ii++)
{
MyStruct* Block_temp = list_structs.at( ii );
// ...
}
当我访问位置ii的元素时,我是否创建了一个带内存分配的新对象?我应该删除当前循环结束时的Block_temp,还是会破坏向量中包含的对象?
由于
答案 0 :(得分:2)
你有一个指向已经在向量中的内容的指针,向量似乎拥有你的数据,所以不要删除它。复制指针不是分配。
考虑:
int* a = new int;
int* b = a; // Pretty much what you are doing
delete a; // If you deleted b, then this would be a double delete, and using a or b after that point would be bad
请参阅std :: vector :: at
的文档