Место, где alloca()
особенно опасно, чем malloc()
- ядро - ядро типичной операционной системы имеет фиксированное пространство стека, жестко закодированное в один из его заголовков; он не такой гибкий, как стек приложения. Выполнение вызова alloca()
с неоправданным размером может привести к сбою ядра. Некоторые компиляторы предупреждают об использовании alloca()
(и даже VLA, если на то пошло) при определенных параметрах, которые должны быть включены при компиляции кода ядра. Здесь лучше выделить память в куче, которая не фиксируется жестким диском, закодированный предел.