dlaczego do różnych wersji systemu Windows trzeba inaczej kod pisać?
Nie ma takiej potrzeby. Jeśli program jest napisany poprawnie i kompilowany poprawnym dla danej architektury kompilatorem, musi działać poprawnie. To nie są porady wróżbity Macieja, tylko jednoznaczny kod, który zawsze ma wykonać się tak samo.
Pamiętaj, że operator delete musi dostać dokładnie ten sam adres, który dostałaś przy alokacji operatorem new. Nie może być przestawiony w inne miejsce, np. za pomocą inkrementacji czy wyzerowania.