OK, prelazim na latinicu da se čovek ne muči (BTW, originalan post je od nekog iz Smedereva - kasno sam ukapirao da dve različite osobe postavljaju pitanja u istoj temi).
Ukratko, objašnjenje je sledeće: operator new je vraćao NULL ako nema dovoljno memorije u davna vremena pre standardizacije jezika (1998) i knjige koje pominješ su verovatno napisane pre tog vremena. Danas new baca bad_alloc ako nema dovoljno memorije, kao što si i sam otkrio. Ako želiš da i dalje koristiš stari način sa NULL, onda moraš da radiš ovako:
Kôd:
array = new (nothrow) double[1000000000];
Obrati pažnju na "nothrow".