LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Более того массивы переменной длинны ака VLA C99 работают исключительно на стеке

Нет, можно кастануть во VLA память из malloc, и это имеет смысл так как будет нормальный многомерный массив в Fortran стиле, а не указатели на указатели

а синтаксис является по сути сахаром к функции alloca

Нет, у alloca время жизни массива вся функция, у VLA только текущая область

Создать пустой массив размером N на этапе передачи в стек параметров для функции и записать из этого пустого массива с мусором из стека данные в файл.

Не знаю что ты имел виду, но синтаксис void f(int n, char buf[n]); уже работает в gcc

Исправление MOPKOBKA, :

Более того массивы переменной длинны ака VLA C99 работают исключительно на стеке

Нет, можно кастануть во VLA память из malloc, и это имеет смысл так как будет нормальный многомерный массив в Fortran стиле, а не указатели на указатели.

а синтаксис является по сути сахаром к функции alloca

Нет, у alloca время жизни массива вся функция, у VLA только текущая область

Создать пустой массив размером N на этапе передачи в стек параметров для функции и записать из этого пустого массива с мусором из стека данные в файл.

Не знаю что ты имел виду, но синтаксис void f(int n, char buf[n]); уже работает в gcc

Исправление MOPKOBKA, :

Более того массивы переменной длинны ака VLA C99 работают исключительно на стеке

Нет, можно кастануть во VLA память из malloc, и это имеет смысл так как будет нормальный массив в Fortran стиле, а не указатели на указатели.

а синтаксис является по сути сахаром к функции alloca

Нет, у alloca время жизни массива вся функция, у VLA только текущая область

Создать пустой массив размером N на этапе передачи в стек параметров для функции и записать из этого пустого массива с мусором из стека данные в файл.

Не знаю что ты имел виду, но синтаксис void f(int n, char buf[n]); уже работает в gcc

Исправление MOPKOBKA, :

Более того массивы переменной длинны ака VLA C99 работают исключительно на стеке

Нет, можно кастануть во VLA память из malloc

а синтаксис является по сути сахаром к функции alloca

Нет, у alloca время жизни массива вся функция, у VLA только текущая область

Создать пустой массив размером N на этапе передачи в стек параметров для функции и записать из этого пустого массива с мусором из стека данные в файл.

Не знаю что ты имел виду, но синтаксис void f(int n, char buf[n]); уже работает в gcc

Исправление MOPKOBKA, :

Более того массивы переменной длинны ака VLA C99 работают исключительно на стеке

Нет, можно кастануть во VLA память из malloc

а синтаксис является по сути сахаром к функции alloca

Нет, у alloca время жизни массива вся функция, у VLA только текущая область

Создать пустой массив размером N на этапе передачи в стек параметров для функции и записать из этого пустого массива с мусором из стека данные в файл.

Не знаю что ты имел виду, но синтаксис void f(int n, char buf[n]); уже работает

Исходная версия MOPKOBKA, :

Более того массивы переменной длинны ака VLA C99 работают исключительно на стеке

Нет, можно кастануть во VLA память из malloc

а синтаксис является по сути сахаром к функции alloca

Нет, у alloca время жизни массива вся функция, у VLA только текущая область