Witam, poniżej zamieszczam kod, oraz screen błędu. Chcialbym wiedzieć jak sobie z nim poradzić, bo nie do końca rozumiem co jest nie tak. W skrócie co robi program:
na wejściu dostaje liczbę n, ma przechowywać n-liczb dowolnej długości.
gdy debuguje, problem pojawia się przy wpisaniu przez użytkownika 'q' i zwalnianiu tablicy (84 linia)
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
char** tablica = (char**)malloc(sizeof(char) * (n+1));
int* suma_cyfr = (int*)malloc(sizeof(int) * (n+1));
memset(suma_cyfr, 0, n * sizeof(int));
if (tablica == NULL)
{
free(suma_cyfr);
return 1;
}
if (suma_cyfr == NULL)
{
free(tablica);
return 1;
}
for (int i = -1; i < n; i++)
{
char* pomocnicza = (char*)malloc(sizeof(char) * 300);
if (pomocnicza == NULL)
{
free(tablica);
free(suma_cyfr);
return 1;
}
if (i == 0)
pomocnicza[0] = 1;
for (int k = 0; k<300; k++)
{
pomocnicza[k] = getchar();
if (pomocnicza[k] == 10)
{
suma_cyfr[i] = k;
break;
}
}
tablica[i] = (char*)malloc(2+2 * (suma_cyfr[i]+1));
for (int j = 0; j < suma_cyfr[i]; j++)
tablica[i][j] = pomocnicza[j];
free(pomocnicza);
}
char a;
while (true)
{
cin >> a;
if (a == '?')
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < suma_cyfr[i]; j++)
cout << tablica[i][j];
cout << endl;
}
}
else if (a == 'q')
{
free(tablica);
free(suma_cyfr);
return 1;
}
}
free(tablica);
free(suma_cyfr);
return 0;
}