Je viens de faire un test tout simple afin de vérifier/modifier certaines habitudes de codage, du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
			try
			{
				voidptr = ::operator new(stupid_big_value);
				if (voidptr)
					...;
			}
			catch (std::bad_alloc &)
			{
				...
			}
Sous Windows et Visual Studio 2015, machine avec 8GB de mémoire physique, j'ai alloué quelques terrabytes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
stupid_big_value = 8ull * 1024 * 1024 * 1024 * 65536;
... Et aucune exception n'est levée

Certains diront que c'est normal, la mémoire (virtuelle) est réservée mais non commitée.
Je n'ose pas faire un memset(voidptr, 0, stupid_big_value), mais ce serait amusant de voir quand le système se fige...

En bref, à quoi bon perdre son temps à essayer de récupérer un std::bad_alloc ou vérifier la nullité d'un pointeur après allocation, si, à priori, la mémoire est toujours "allouée".