tablica dynamiczna w klasie

0

Witam,

Zawsze jak rozwiązuje zadania na SPOJu i zrobie sobie tablice dynamiczna w klasie to wyskakuje mi błąd SIGABRT. Gdy zmienie tablice na zwyczajną wszystko jest dobrze. Stąd moje pytanie czy może coś źle zwalniam pamięć albo coś innego że to nie chce działać w ten sposób. W komentarzach jest to czego on nie akceptuje zamiast tych zwykłych tablic.

#include <iostream>

using namespace std;

class Suma
{
public:
	int testy;
	int ile;
	
	//int *tabtest = new int[ile];
	//int *suma = new int[ile];
	int tabtest[100];
	int suma[100];
	void wczytaj()
	{
		
		cin >> testy;

		for (int i = 0; i < testy; i++)
		{
			cin >> ile;
		
				suma[i] = 0;
			
			for (int j = 0; j < ile; j++)
			{
				cin >> tabtest[j];
				
				suma[i] = suma[i] + tabtest[j];
				
			}
			//delete[] tabtest;
			//delete[] suma;
		}
	}
	void wypisz()
	{
		for (int i = 0; i < testy; i++)
		{
			cout << suma[i] << endl;
		}


	}
};


int main()
{

	Suma s1;
	s1.wczytaj();
	s1.wypisz();



	//system("pause");
	return 0;
}
1
    int ile;
 
    //int *tabtest = new int[ile];
    //int *suma = new int[ile];

C++ to język imperatywny bez leniwej ewaluacji. Instrukcja jest wykonywana TAM GDZIE JEST NAPISANA. Czy w tym miejscu gdzie robisz "new" znana jest już wartość ile? Nie jest...

0

to dlaczego u mnie w kompilatorze działa prawidłowo ten kod z tablicami dynamicznymi?

0

instrukcje

//int *tabtest = new int[ile];
    //int *suma = new int[ile];

powinienes byl wrzucic zaraz po

cin >> ile;

inaczej dynamiczne tworzenie tablic nie za bardzo ma sens

0
crespo77 napisał(a):

to dlaczego u mnie w kompilatorze działa prawidłowo ten kod z tablicami dynamicznymi?

uruchom w debug mode i sprawdz

0
crespo77 napisał(a):

to dlaczego u mnie w kompilatorze działa prawidłowo ten kod z tablicami dynamicznymi?

w ile masz śmieci i teraz na jednym komputerze/kompilatorze wartość tego śmiecia nic nie zepsuje a na innym już tak, więc tak jak w komentarzu "czysty przypadek".

Możliwe również, że uruchamiasz w trybie debug, a kompilator domyślnie nadaje wtedy takiej zmiennej jakąś dziwną wartość np 0xCDCDCDCD. Jest to mało prawdopodobne bo wtedy oczekiwałbym wyjątku bad_alloc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1