假设我创建了一个向量数组,然后为num_vectors
个向量分配内存。在对随机向量元素执行了一些push_back
操作后,执行delete
会发生什么?我想知道是否所有分配的内存(new
和push_back
)都被释放了。
int num_vectors = 123456;
std::vector<uint64_t>* arr_vecs;
arr_vecs = new std::vector<uint64_t>[num_vectors];
int random_ix;
int random_val = 999;
random_ix = 1;
arr_vecs[random_ix].push_back(random_val);
random_ix = 88;
arr_vecs[random_ix].push_back(random_val);
random_ix = 123;
arr_vecs[random_ix].push_back(random_val);
delete[] arr_vecs;
这个问题不是关于现代C++中的好/坏实践。我想问一个具体的问题。
看起来它被释放了,但是我希望对预期的行为有更好的直觉。
1条答案
按热度按时间njthzxwz1#
是的,delete操作符将调用数组的对象析构函数,并且在std::vector析构函数中释放vector分配的内存。
如果需要多维数组,建议使用向量的向量,或者可以创建一个1D数组,并通过简单的数学将N-D数组Map到1D。