Это действительный C ++ (например, не вызывает UB) и он достигает того, что я хочу, без утечки памяти? Вэлгриндс жалуется на несоответствие free
и delete
, но говорит, что «утечки невозможны».
int main() {
int* a = new int[5];
for(int i = 0; i < 5; ++i)
a[i] = i;
for(int i = 0; i < 5; ++i)
delete &a[i];
}
Причина, по которой я спрашиваю: у меня есть класс, который использует boost::intrusive::list
и я new
каждый объект, который добавляется в этот список. Иногда я знаю, сколько объектов я хочу добавить в список, и думал о том, чтобы использовать new[]
для выделения чанка, и при этом иметь возможность delete
каждый объект сам по себе в стиле Disposer boost::intrusive
.