Итак, у меня есть эта функция, в которой есть строка с предопределенным буфером (буфер определяется при вызове функции).
Мой вопрос: почему компилятор не выдает мне ошибку, когда я делаю следующее (без оператора new?):
int crc32test(unsigned char *write_string, int buffer_size){
// Append CRC32 to string
int CRC_NBYTES = 4;
int new_buffer_size = buffer_size + CRC_NBYTES; // Current buffer size + CRC
// HERE (DECLARATION OF THE STRING)
unsigned char appendedcrc_string[new_buffer_size];
return 0;
}
НЕ ЭТО правильный способ сделать это ..?
int crc32test(unsigned char *write_string, int buffer_size){
// Append CRC32 to string
int CRC_NBYTES = 4;
int new_buffer_size = buffer_size + CRC_NBYTES; // Current buffer size + CRC
// HERE (DECLARATION OF THE STRING USING NEW)
unsigned char * appendedcrc_string = new unsigned char[new_buffer_size+1];
delete[] appendedcrc_string ;
return 0;
}
И я фактически скомпилировал оба, и оба сработали. Почему компилятор не выдаёт мне ошибку?
И есть ли причина использовать оператор new, если очевидно, что предыдущая функция тоже работает?