我有以下代碼ç爲什麼realloc的不工作
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);
}
價格是一個指針數組和遞歸我鑄造的realloc增加價格的大小每一步。 我得到了很多錯誤的錯誤,我有一種感覺,它涉及到分配, 我打印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,但我需要動態增加在不同的示例大小將增加150.
'realloc的(價格的sizeof(價格) * 4);'當語句再次運行時,永遠不會做任何不同的事情。內存分配保持在這個大小:4個數組元素。即使'sizeof(價格)',指針的大小,而不是它指向的數據的大小。 –
'我打印sizeof(價格)'。 「價格」是一個指針。 'sizeof'指針總是返回相同的值。另外,你不需要在C中使用'malloc'或'realloc'。 – DeiDei
有沒有辦法增加它? – Brec