私はmallocで作成された動的メモリオブジェクトのサイズを増やす関数を書いています。この関数は、引き数として、増やすメモリブロックへのポインタ、ブロックの現在のサイズ、およびブロックを増やす量を取る必要があります。このようなCを使用して同じ関数内の異なる種類の型のサイズを取得する方法は?
何か:
int getMoreSpace(void **pnt, int size, int add) {
xxxxxx *tmp; /* a pointer to the same as pnt */
if (tmp = realloc(pnt, (size+add)*sizeof(xxxxxx))) { /* get size of what pnt points to */
*pnt=tmp;
return 1;
else return 0;
}
問題は、私は関数がどんなPNTポイントに作業しないようにしたいということです。どのように達成するのですか?
私はあなたが言っていることを実際には得られません。 pntがローカルであることはなぜ重要なのでしょうか?私は関数が返るまでそれを必要とします。 また、このラッパーはなぜ危険ですか?私はこの種のサイズ増分をプログラムの中でさまざまな状況下でやっているのですが、この機能が私のコーダーをよりクリーンでシンプルにしてくれるのは、同じことを何度も入力する必要がないからです。とにかく機能の?)。 – paldepind
私は100%確信していませんが、私はC言語で 'ローカル'ポインタのようなものはないと思っています。 –
@Stefanos:関数の引数は、関数が返ったときに範囲外に出るという意味で "ローカル変数" 。 'ptr'に新しい値を代入しても効果はありません。実際、コンパイラは割り当てを最適化でき、最適化する必要があります。 –