同じ変数でmalloc()を何度も呼び出すとどうなりますか?以前に割り当てられたメモリを解放するにはどうすればよいですか?私はstruct iovecを使用してデータを格納する予定です(このチャンクを後で送信/書き込みできるように)。各mallocを呼び出す前に、現在の参照をiovec配列に保存したいと思います。これをした後、固定サイズの新しいメモリブロックを得るために同じ変数でmallocを呼び出します。使い果たされた後、私はiovec配列にそれを保存し、mallocをもう一度呼び出します。後でiovecアレイを解放することはできますか?これが適切なアプローチであるかどうか私に教えてください。mallocを複数回呼び出す
答えて
次のようなことをやっているようなあなたの説明に基づいて、それが聞こえる:
var = malloc(sizeof *var);
do_something_with(var);
vec[i++] = var;
var = malloc(sizeof *var);
それが本当ならば、これは大丈夫(モジュロエラーと健全性チェック)です - あなたは、参照を保存していますvar
を上書きする前に、以前に割り当てられたメモリに割り当てます。あなたがvec
free
に各要素を巡回したい、あなたを完了したら:
while (i > 0)
free(vec[--i]);
あなたが何かやっている場合:
var = malloc(sizeof *var);
do_something_with(var);
var = malloc(sizeof *var);
を、あなたは問題を抱えている - あなたはあなたが上書きさしました以前に割り当てられたメモリのみを参照し、アクセスすることなくそのまま残すか、free
をメモリリークにつなぎます。
すぐにお返事ありがとうございます。私は最初のアプローチに非常に似ています。私は固定長バッファを割り当てています。いっぱいになったら、この参照を保存してmalloc()をもう一度実行してください。 – mehtame026
@ mehtame026:あなたは大丈夫でしょう。 –
ありがとう@ジョン.. – mehtame026
- 1. 関数を呼び出す複数回
- 2. コンストラクターを呼び出す複数回
- 3. angular2ルートガードを複数回呼び出す
- 4. deleteRowsAtIndexPathsを複数回呼び出す
- 5. Gradle buildConfigを複数回呼び出す
- 6. BeforeShowDayを複数回呼び出す
- 7. google.script.run.withSuccessHandlerを複数回呼び出す
- 8. ReactDOM.renderを複数回呼び出す
- 9. mallocを呼び出すsnprintf、またはmallocを呼び出さないsnprintf
- 10. メソッドの呼び出しが複数回
- 11. 複数のCTEを同じクエリで複数回呼び出す
- 12. 角2関数呼び出し* ng複数回呼び出すため
- 13. クリックビュー内でメソッドを呼び出す複数回呼び出される
- 14. Reactjs AJAX呼び出しを複数回呼び出す(1回のクリックで1回だけ!)
- 15. 角度4 Subscribeメソッド呼び出しを複数回呼び出し
- 16. js関数をワンクリックで複数回呼び出す
- 17. タイマ(Elapsed関数を複数回呼び出す)
- 18. JQuery setTimeoutは常に関数を複数回呼び出す
- 19. locationManager.requestWhenInUseAuthorization関数を複数回呼び出す方法は? Cordova
- 20. djangoでsetUp関数を複数回呼び出すTestCase
- 21. データステップ内でマクロ変数を複数回呼び出すSAS
- 22. javascript clickイベントのaddEventListener関数を複数回呼び出す
- 23. Jquery関数が複数回呼び出す
- 24. Node.jsで関数が複数回呼び出されます
- 25. Rails 3ジェネレータでタスクを複数回呼び出す
- 26. SwitchPreferencesはonPreferenceChange()メソッドを複数回呼び出します
- 27. nowjsグループ複数回呼び出されるイベントを残す
- 28. Response.FilterはWrite()を複数回呼び出しますか?
- 29. スレッドを複数回作成する呼び出し方法
- 30. java.util.zip.Deflater.setInputを複数回呼び出すと、何もしません。
代わりに 'realloc'を使用できますか? – RoiHatam
あなたのコードを投稿してください。あなたが何を意味するかは分かりません。ポインタの配列を作成し、各配列を配列要素の1つに保存することができます。その後、配列をループしてそれらのすべてを解放することができます。 – Barmar
@RoiHatam:私はreallocを呼びたくありません。なぜなら、このシナリオでは非常に高価な操作のようです。 – mehtame026