LINUX.ORG.RU

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

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

Мм, а что может пойти не так?

Ну например прерывание может сработать и что-то в стек запушить в процессе работы, и это что-то может затереть те данные. Если у тебя функция, из которой ты таким кривым методом собираешься доставать данные, написана на Си, то расположение локальных переменных в стеке будет зависеть от опций компилятора, так что тебе эту функцию надо наверное на асме писать.

Зачем вообще так делать? Ты не можешь до вызова своей функции узнать, сколько именно ей нужно места для данных, и потом сделать alloca() или VLA нужного размера и передать указатель на эту аллоцированную в стеке память в ту функцию, чтоб она туда набросала данных?

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

Мм, а что может пойти не так?

Ну например прерывание может сработать и что-то в стек запушить в процессе работы, и это что-то может затереть те данные. Если у тебя функция, из которой ты таким кривым методом собираешься доставать данные, написана на Си, то расположение локальных переменных в стеке будет зависеть от опций компилятора, так что тебе эту функцию надо наверное на асме писать.

Зачем вообще так делать? Ты не можешь до вызова своей функции узнать, сколько именно ей нужно места для данных, и потом сделать alloca() и передать указатель на эту аллоцированную в стеке память?

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

Мм, а что может пойти не так?

Ну например прерывание может сработать и что-то в стек запушить в процессе работы, и это что-то может затереть те данные.

Зачем вообще так делать? Ты не можешь до вызова своей функции узнать, скольк именно ей нужно места, и потом сделать alloca() и передать указатель на эту аллоцированную память?