Jaki typ wyjątku rzuca new?

Jaki typ wyjątku rzuca new?
BT
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 102
0

Mam taki kod:

Kopiuj
#include <iostream>
using namespace std;

int main()
{
	int size = 1000000;	// początkowy rozmiar bloku pamięci
	while(true) {
		try
		{
			int* myarray= new int[size];
			size += 2000000;
			delete myarray;
		}
		catch(int)
		{
			cout << "\nWyrzycilem inta" << endl;
		}		
	}

        cout << "Koniec programu" << endl;
        system("pause");
	return 0;
}

Mam za zadanie przechwycić wyjątek, jaki rzuci new oraz nie dopuścić do przerwania pracy programu.

Niestety główkuję jakie typu ten wyjątek będzie.
Początkowo założyłem, że będzie to int. Jednak byłem w błędzie.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
4

bad_alloc

BT
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 102
0

Bardzo dziękuję. :)

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

@btanreb WTF? Nad czym ty chcesz głowkować? o_O Zerkasz do dokumentacji i już wiesz jaki wyjątek rzuca...
http://www.cplusplus.com/reference/new/operator%20new/

Allocates size bytes of storage, suitably aligned to represent any object of that size, and returns a non-null pointer to the first byte of this block.
On failure, it throws a bad_alloc exception.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.