Witam miałem do zamiany taki program z C na C++:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int *tablica;
if ((tablica = (int *) malloc(50*sizeof(int))) == NULL)
{
printf("za malo pamieci!!!\n");
exit(1);
}
printf("operacja przydzielenia pamieć została pomyślnie zakończona\n");
return 0;
}
i zrobiłem to tak:
#include <iostream>
#include <new>
#include <cstdio>
using namespace std;
int main()
{
try
{
int *tab = new int[50];
cout << "rozmiar " << 50*sizeof( *tab );
}
catch(std::bad_alloc)
{
cout << "brak pamięci" << endl;
}
return 0;
}
I jak dobrze rozumiem takie coś można używać w programach by sprawdzić czy tablice na których pracujemy mieszczą się w pamięci np. jak zadeklarujemy dla tablicy 50 bitów to po przekroczeniu dostaniemy komunikat o braku pamięci? Ale nie wiem czy dobrze to zrozumiałem.
try
rzuci wyjątek, gdynew
zgłosi błąd alokacji pamięci na tablicę.