Слушайте, а какой механизм у системы для очистки виртуальной памяти без вмешательства программы? *и какие системы так умеют *
В винде есть процесс с нулевым приоритетом, который занимается очисткой свободных страниц памяти.
Когда вызывается VirtualAlloc, то если память очищена, то она просто отдаётся процессу. Если её не успели очистить, то очистка происходит внутри VirtualAlloc. Это делается, чтобы какие-нибудь серьюрные данные не попали чужому приложению.
Т.е. если выделил новую память, для которой потребовался ViatualAlloc, то она будет обнулена (системой). Если же внутри приплюснутого кода выделил (malloc'ом), использовал, освободил, снова выделил, то может попасться уже использованная (своим же процессом) память, которая будет не обнулённой.
Как я понимаю, new обнуляет всегда.