У меня есть следующий кодс почему перераспределить не работают
void getPariceArray(Board board, treeNode *tn, Position *dst, int **prices, int *counter, int total)
{
if (tn == NULL)
return NULL;
if (tn->position[0] == dst[0][0] && tn->position[1] == dst[0][1])
{
prices = (int **)realloc(prices, sizeof(prices) *4);
prices[*counter] = (int *)malloc(sizeof(int));
printf("%d", sizeof(prices));
*prices[*counter] = total;
*counter = *counter + 1;
}
int x = tn->position[1] - '1';
int y = tn->position[0] - 'A';
int cellPrice = board[x][y] - '0';
total += cellPrice;
getPariceArray(board, tn->up, dst, prices, counter, total);
getPariceArray(board, tn->down, dst, prices, counter, total);
getPariceArray(board, tn->right, dst, prices, counter, total);
getPariceArray(board, tn->left, dst, prices, counter, total);
}
цены на массив указателей и каждый шаг в рекурсии Я литье перераспределить, чтобы увеличить размер цены. У меня появилось много ошибок ошибок, и у меня было чувство, что это связано с распределением, Я напечатал sizeof (цены), и я увидел, что он остался 4 и не увеличился Может кто-нибудь, пожалуйста, скажите мне, где я поступил не так?
заранее спасибо
PS
Редактировать
У меня есть еще одна функция, которая princt в ** цены
void printPricesArray(int **arr, int length)
{
for (int i = 0; i < length; i++)
{
printf("place:%d Price:%d\n", i, *arr[i]);
}
}
Это ошибка, я получаю, когда prices = realloc(prices, sizeof(prices) *4);
но когда я меняю линию на это prices = realloc(prices, sizeof(prices) * 150);
, все идет хорошо, потому что я знаю, что в моем примере размер не проходит 130, но мне нужно динамическое увеличение incase в разных размерах примера будет более 150.
'перераспределить (цены, SizeOf (цены) * 4); 'никогда не делает ничего другого, когда оператор запускается снова. Распределение памяти остается в таком размере: 4 элемента массива. Даже с 'sizeof (prices)' - размер указателя, а не размер данных, на которые он указывает. –
'Я напечатал sizeof (цены)'. 'prices' - указатель. 'sizeof' указатель всегда будет возвращать то же самое. Кроме того, вам не нужно бросать 'malloc' или' realloc' в C. – DeiDei
есть ли способ его увеличить? – Brec