Я работаю с c и динамической памятью, но у меня возникают проблемы с отображением некоторых значений в массиве int **
Я использовал Valgrind, вижу, где проблема, и я знаю, где она, но я не знаю, как ее исправить, потому что проблема не имеет смысла для меня.
result_s ** greedy(case_s ** cases, int cases_quantity)
{
int ** case_conteiners;
int * current_conteirners;
result_s ** results = malloc(sizeof(result_s*)*cases_quantity);
for (int i = 0; i < cases_quantity; ++i)
{
results[i] = malloc(sizeof(result_s));
int conteiners_quantity = cases[i]->conteiners_quantity;
int fuel = cases[i]->fuel;
int current_fuel = 0;
int max_conteiner = 0;
int current_count = 0;
int case_count = 0;
current_conteirners = malloc(sizeof(int)*2);
case_conteiners = malloc(sizeof(int*)*256);
for (int j = 0; j <= conteiners_quantity+1; ++j)
{
if (current_fuel < fuel)
{
max_conteiner = max_value(cases[i]->conteiners, cases[i]->conteiners_quantity);
printCurrent(i,max_conteiner);
current_conteirners[current_count] = max_conteiner;
current_fuel += max_conteiner;
current_count++;
}
else if (current_fuel >= fuel && current_count <= 2 )
{
case_conteiners[case_count] = current_conteirners;
printf("\n\n HERE IS THE LEAK %d\n\n", case_conteiners[0][1]);
printf("\n\n HERE IS OK %d\n\n", current_conteirners[1]);
current_conteirners = malloc(sizeof(int)*20);
if (j != conteiners_quantity && i-1 != cases_quantity)
{
current_fuel = 0;
current_count = 0;
}
case_count++;
}
}
if (current_fuel >= fuel && current_count <= 2 )
{
case_conteiners[case_count] = current_conteirners;
case_count++;
}
results[i]->conteiners = case_conteiners;
results[i]->conteiners_quantity = 2;
results[i]->case_count = case_count;
}
return results;
}
Как видите, я хочу создать массив массивов. Я хочу поместить много "current_conteiners" в "case_conteiners".
Почти все работает нормально, но case_conteiners [0] [1] дает мне только номер памяти, а case_conteiners [1] дает мне правильное значение.
РЕДАКТИРОВАТЬ: Здесь я называю функцию жадным. Случаи это массив дел. Структура с 2 int и массивом int.
results = greedy(cases, atoi(data[1]));