Почему malloc на самом деле не -детерминирован? (Linux/Unix)

malloc не гарантирует возврат памяти с нулевым значением. Принято считать, что не только это, но и то, что содержимое памяти malloc возвращает на самом деле не -детерминированное , т.е. openssl использовал их для дополнительной случайности .

Однако, насколько я знаю, malloc построен поверх brk/sbrk , которые "возвращают" нулевую память. Я понимаю, почему содержимое того, что возвращает malloc , может быть не -0 , например. из ранее свободной памяти, но почему они должны быть не-детерминированными в "нормальном" однопоточном -программном обеспечении?

  1. Верно ли общепринятое мнение (при условии, что один и тот же двоичный файл и библиотеки)
  2. Если да, то почему?

Редактировать Несколько человек ответили, объясняя, почему память может быть не -0, что я уже объяснил в вопросе выше. Я спрашиваю, почему программа, использующая содержимое того, что возвращает malloc, может быть недетерминированной -, то есть почему она может иметь разное поведение при каждом запуске (, предполагая один и тот же двоичный файл и библиотеки ). Не -детерминированное поведение не подразумевается не -0. Другими словами, :почему он может иметь разное содержимое при каждом запуске двоичного файла.

8
задан Oleg2718281828 28 June 2012 в 20:16
поделиться