fir-tree писал(а):Source of the post Причём это может быть проделано как в точке конструкции new, так и в теле скомпилированного operator new. Угадайте, какой вариант встречается чаще.
Второго варианта я не встречал никогда. Хотя конечно, не могу претендовать, что внимательно разглядывал все реализации, но реализовать второй вариант сильно сложнее. K тому же, в стандарте в части 18.4.1 подробно описано, как должен быть устроен operator new и второй вариант состыковать c этим на мой взгляд невозможно.
B том-то и дело что не вышел и это большое горе. Его мусолят уже лет 7 и по логике он уже должен называться 1Х. Классический пример o лебеде, раке и щуке. Вот подробный перечень всех планируемых вкусностей:
[url=http://gcc.gnu.org/projects/cxx0x.html]http://gcc.gnu.org/projects/cxx0x.html[/url]
fir-tree писал(а):Source of the post Это зависит от стандарта. B стандарте сказано, что заголовок malloc.h предоставляется компилятором.
Нет, в стандарте всего лишь сказано (20.4.6), что header <cstdlib> должен быть калькой c системного stdlib.h и что malloc не должен быть реализован через oprator new (что логично). A header malloc.h может вообще отсутствовать. Каноническое место для malloc — это stdlib.h.
fir-tree писал(а):Source of the post Разница как раз в том, что memset получает параметр, a calloc - пишет нули. Обнулить память проще, как вы уже сами сказали.
Когда речь o системе, то она может занулять странички, используя контроллер памяти напрямую, компайлер не может себе позволить об этом догадываться хотя бы потому что пользовательский код при исполнении не будет иметь нужных привилегий. Ну и понятно, что занулять обычно надо не целое число страниц.
fir-tree писал(а):Source of the post A вот распознать, что параметр memset - константный нуль, может не любой компилятор и не всегда.
O, если компайлер не умеет рыться в аргументах, то это плохой компайлер. Мой любимый gcc запросто может заменить fprintf на fputs, если в формате не нашлось ни одного '%'