Порядок оценки параметров не определен, это означает, что компилятор может оценивать параметр в любом порядке, но не должен вызывать UB. Это необязательно для параметров с распределением, например, выделение имеет побочный эффект, но для семантики программы порядок распределения не должен иметь значения.
class person;
// consumes 2 persons, needs to delete them later
void use_persons(person* a, person* b);
int main() {
// Alice can be allocated before or after Bob
use_persons(new person("Alice"), new person("Bob"));
}
Патчи и пакеты обновления обычно только должны обновить совместно использованные библиотеки ядра системы. Эти библиотеки заменяются или исправляются из сжатого архива, следовательно их размер. После того как библиотеки являются обновленной остальной частью программного обеспечения ОС, может продолжить использовать новые версии.
Приложения в наше время разработаны, чтобы быть модульными и пользоваться внешними библиотеками, которые могут быть обновлены легко. Иногда главное приложение или любые медиа использовали, не должен быть заменен, только библиотека, это изменяется.
Для дополнения более ранних ответов, назад в день, когда размер файла действительно имел значение, некоторые патчи были поставлены как двоичный файл diffs, значение, сам патч был исполняемым файлом, который знал, какие файлы должны были быть изменены, и как, и это на самом деле изменилось, только определенная часть файлов обнуляет и, локально, вместо того, чтобы заменить файлы полностью.
Следующий URL может представлять интерес для Вас в знании архитектуры.
http://msdn.microsoft.com/en-us/library/aa387291 (По сравнению с 85) .aspx
Патчи (также названный дельтами) являются только различиями между двумя файлами. Если только немного байтов изменения файла на 1 ГБ, патч будет иметь только немного байтов размера. Для текстовых файлов разность используется для двоичных файлов xdelta или подобная. Пакеты обновления являются наборами патчей.