boost::ptr_vector with arrays:我能确定它的析构函数调用delete[]而不是delete吗



我有以下情况:

boost::ptr_vector<float> vec;
float* array = new float[4]();
vec.push_back(array);
// Add some more elements to vec..

我如何确保如果我离开这个范围,vec将被销毁?ptr_vector的析构函数在vec的每个元素上调用delete[],而不是delete。我不明白它应该如何工作,因为float*float[4]的模板参数float是相同的。

您可以将ptr_vectorCloneAllocator模板参数指定为默认值heap_clone_allocator以外的值。无法使实际类boost::ptr_vector<float>的实例使用delete[]而不是delete

对于包含内置简单类型项(如float或char)的数组:我认为delete和delete[]之间没有区别,因为delete[]假设为数组的每个对象调用多个析构函数,但内置基元类型不假设调用析构函数-没有什么可销毁的;释放浮点数组只是释放实体内存,而不执行任何可能放在某种析构函数中的代码。Murr。。。

最新更新