В VxSim, когда я запускаю strtod («1E1000000», 0) (в stdlib.h), он выполняется очень быстро (и возвращает 1), а strtod («1E1000000000000000000000000000», 0) занимает около 20 секунд, а затем возвращает 1. Иногда это всегда быстро и возвращает ненулевые значения, а затем нажатие ctrl-c и перезагрузка оболочки снова замедлят работу.Почему strtod замерзает при задании больших чисел в VxWorks?
Почему это происходит? В других операционных системах почти мгновенно.
я играл с этим более, а также в VxSim, когда вы бежите:
strtod("10", 0)
strtod("10", 0)
strtod("10", 0)
strtod("10", 0)
strtod("10", 0)
strtod("10", 0)
strtod("10", 0)
strtod("10", 0)
Последняя дает:
значение = 1615516944 = 0x604ad510
Я испытал это на и этого не произошло, так что это может быть ошибка в VxSim.
Кроме того, компиляция этого также не дает вам этой ошибки. Только когда вы вводите их вручную в командной строке VxWorks и запускаете их там.
По причинам ниже это действительно стоит сообщить. VxWorks используется во многих критически важных системах, и нетрудно представить, что эта проблема нашла свой путь в других базовых кодах. –