Skocz do zawartości
kfgz

[solved] [c++] Tablica Dynamiczna

Rekomendowane odpowiedzi

Witam,

 

Jak napisać sprawdzenie czy jest jeszcze wolna pamięć żeby zainicjować tablicę?

 

#include <stdlib.h>#include <stdio.h>float *floatt;int main(int argc, char *argv[]) {	int k, i, j = 1000000000; // j = 1GB	for(i = 0; i < 6; i++) {		if (!(floatt = new float [j])) {			printf ("\n\nError: out of RAM!\n\n");			exit(1);		} else {			for (k = 0; k < j; k++)				if(!(floatt[k] = 2.35)) {printf ("\n\nError: out of RAM!\n\n");exit(1);}// 4GB RAM alloc			printf("\nLoop: %d", i + 1);		}		//delete [] floatt;	}   return(0);}

 

Powyższy kod kończy się błędem

 

terminate called after throwing an instance of 'std::bad_alloc'  what():  std::bad_alloc

Oczywiście delete [] floatt; zakomentowałem z premedytacją.

Edytowane przez Dj_AnT

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziękować. Działa tak jak chciałem. Końcowy kod:

 

#include <stdlib.h>#include <stdio.h>#include <iostream>float *floatt;int main(int argc, char *argv[]) {	int k, i, j = 1000000000; // j = 1GB	for(i = 0; i < 6; i++) {		try {floatt = new float [j];}			catch (const std::bad_alloc& e) {						printf("\nError: out of RAM!"); 						exit(1);						}		for (k = 0; k < j; k++) {			floatt[k] = 2.35; // 4GB RAM alloc		}		printf("\nLoop: %d", i + 1);		delete [] floatt;	}   return(0);}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...