wsprintf не очищает стек

Тема в разделе "WASM.BEGINNERS", создана пользователем samba, 16 ноя 2005.

  1. samba

    samba New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    65
    Адрес:
    England
    недавно обнаружили! а сколько из-за этой заразы ошибок было! :dntknw:
     
  2. Son of God

    Son of God New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2005
    Сообщения:
    125
    Данная функция вызывается по соглашению cdecl, так что надо чистить стек самому.
     
  3. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    обалдеть новость :)
     
  4. harley

    harley New Member

    Публикаций:
    0
    Регистрация:
    28 июн 2005
    Сообщения:
    11
    Адрес:
    Russia
    А вы что хотели?

    Функция может быть вызвана с 2-мя параметрами или с 22-мя...

    А обработчику почем знать, сколько их? Вот и приходится стек равнять вызывающей программе.
     
  5. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    а обработчику легко знать

    там неявно передаётся размер массива
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    staier

    Причем тут массив?
     
  7. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Массив, может и ни причем, но тезис "обработчику почем знать" - конечно неверный, т.к. число передаваемых параметров должно соответствовать (по кр.мере быть не менее) числа спецификаторов формата в lpFmt. Поэтому после анализа "правильной" lpFmt функция wsprintf может "знать" сколько параметров было передано и в принципе могла бы удалить их из стека. Но микрософт видать решил c этим не связываться, т.к. и эпилог функции получается нестандартный и строка lpFmt м.б. с ошибками и число параметров может оказаться больше числа спецификаторов