Есть ли разница между new char[n]
и new (char[n])
?
У меня есть второй случай в сгенерированном коде, g++ (4.8.0) дает мне
ISO C++ does not support variable-length array types [-Wvla]
Это заставляет меня думать, являются ли эти два одинаковыми или нет.
-
new char[n]
означает "выделитьn
объекты типаchar
. - означает
new (char[n])
означает "выделить 1 объект типаarray of n chars
"? - Удаление первого ясно.
- Я должен удалить второй с помощью
delete
илиdelete[]
? - Есть ли какие-либо другие различия, о которых я должен знать?
- Могу ли я безопасно удалить круглые скобки и перевести второй случай в первый, когда другие части программного обеспечения ожидают второй?
Код генерируется сторонним программным обеспечением (и используется другими частями программного обеспечения), поэтому я не могу просто "использовать вектор вместо".
Это минимальный пример:
int main (void)
{
int n(10);
int *arr = new (int[n]); // removing parentheses fixes warning
*arr = 0; // no "unused variable" warning
return 0;
}