Можно ли использовать new [] вместо new? К примеру:
int main()
{
int q;
q = 1;
int *mass = new int [q];
...
delete [] mass;
return 0;
}
Спрашиваю потому, что хочется сделать код более универсальным, чтобы каждый раз не делать проверки на значения переменной q, где она может быть больше единицы или равной ей. Будет ли такой код корректно функционировать? И не будет ли такой стиль считаться дурным тоном?
Никто не мешает писать new T[n], где n == 1.
Однако само по себе использование new T[n] и new T считается дурным тоном, т.к. есть std::vector<T> и std::make_unique<T>.
В частности С++ Core Guidelines не рекомендуют использование "naked new":
ES.60: Avoid new and delete outside resource management functions
Reason
Direct resource management in application code is error-prone and tedious.
Такой способ создания одиночных объектов непригоден в случаях, когда необходимо полиморфное удаление полиморфных объектов. Полиморфное удаление возможно только через new/delete, но не через new[]/delete[].
Также такой способ создания одиночных объектов приведет к повышенному расходу памяти в случаях, когда объект имеет нетривиальный деструктор.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей