Размер массива во время выполнения без динамического выделения позволяется?

Посмотрите на этот ответ.

. Это не имеет ничего общего с Wi-Fi, то, как вы его настроили, попробуйте использовать setRepeating вместо setInexactRepeating. Разница хорошо объяснила приведенный выше ответ.

Редактировать

В конце концов он заработал после изменения флага на 0, как показано ниже

val pendingIntent = PendingIntent.getBroadcast(context, requestCode, archiveIntent, 0)

Проход 0 вернет любой существующий сигнал тревоги или создаст новый .

58
задан Rakete1111 22 April 2017 в 10:37
поделиться

4 ответа

Это действительно в C99.

Стандарт C99 поддерживает массивы переменного размера в стеке. Возможно, ваш компилятор также решил поддерживать эту конструкцию.

Обратите внимание, что это отличается от malloc и new . gcc выделяет массив в стеке, точно так же, как это делает с int array [100] , просто настраивая указатель стека. Распределение кучи не выполняется. Это очень похоже на _alloca .

53
ответ дан Mehrdad Afshari 24 November 2019 в 19:03
поделиться

Это действительно только в C99. В следующий раз вы можете попробовать проверить код в надежном компиляторе .

7
ответ дан Özgür 24 November 2019 в 19:03
поделиться

Это допустимый C99, это не допустимый C ++. Это одно из немногих различий между двумя языками.

4
ответ дан 24 November 2019 в 19:03
поделиться

Это известно как VLA (массивы переменной длины). Это стандартно в c99, но gcc допускает это в коде c ++ как расширение. Если вы хотите, чтобы он отклонял код, попробуйте поэкспериментировать с опциями -std = standard , -ansi и -pedantic .

20
ответ дан 24 November 2019 в 19:03
поделиться