Что такое выравнивание стека? Почему он используется? Можно ли это контролировать с помощью настроек компилятора?
Подробности этого вопроса взяты из проблемы, возникающей при попытке использовать библиотеки ffmpeg с msvc, однако то, что меня действительно интересует, является объяснением того, что такое "выравнивание стека".
Подробности:
- При запуске моей программы, совместимой с msvc, которая ссылается на avcodec, я получаю следующая ошибка: "Компилятор не выровнял переменные стека. Libavcodec имеет был скомпрометирован ", после чего произошел сбой в avcodec.dll.
- avcodec.dll не был скомпилирован с msvc, поэтому я не вижу, что происходит внутри.
- При запуске ffmpeg.exe и использовании того же avcodec.dll все работает хорошо.
- Файл ffmpeg.exe не был скомпилирован с помощью msvc, он соответствовал gcc/mingw (то же, что и avcodec.dll)
Спасибо,
Dan