に動作していない理由を私は次のコードを持っているCの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になっていないことが分かっているからですが、サイズが違うとサイズが大きくなる必要があります。
'のrealloc(価格、はsizeof(価格) * 4); '文が再度実行されたときには何も変わらない。メモリの割り当ては、そのサイズにとどまります:4つの配列要素。 'sizeof(prices)'であっても、ポインターのサイズであり、ポインターのデータサイズではありません。 –
'私はsizeof(価格)'を印刷しました。 'prices'はポインタです。 'sizeof'ポインタは常に同じものを返します。また、Cで 'malloc'や' realloc'をキャストする必要はありません。 – DeiDei
これを増やす方法はありますか? – Brec