私の質問はちょっと混乱しますが、バッファを最小限に抑えたら、データの左にrealloc
はどうなりますか?たとえば、バッファに50バイトのデータが格納されていると仮定します。後で私のコードで私はrealloc
と私のバッファーのサイズを変更するだけで30バイトまで保持します。 realloc
の左に20バイトを超えるものは何ですか?それは、時にはそれがその場でそれを行うために管理し、それが返すポインタは、あなたが入れポインタと同じ数値であることを除いバッファを小さくするためにバッファをreallocすると、正しいサイズに達するまでバッファ内のデータが削除されますか?
2
A
答えて
7
realloc
は、正確にmalloc
+ memcpy
+ free
である(しかし、あなたはそれに頼ることはできません)。左端の20バイトが解放されます。 C標準から
、7.22.3.5
realloc関数
realloc
機能は、古いオブジェクトはptr
によって指さ解放し、size
で指定されたサイズを持つ新しいオブジェクトへのポインタを返します。新しいオブジェクトの内容は、解放前の古いオブジェクトの内容と同じでなければならず、新しいサイズと古いサイズのうちの小さいものになります。新しいオブジェクト内の古いオブジェクトのサイズを超えるバイトは、不確定な値を持ちます。
は、それは実装依存ではないでしょうもhttp://en.cppreference.com/w/c/memory/reallocまたはhttp://pubs.opengroup.org/onlinepubs/9699919799/functions/realloc.html
+2
@FumerianGaming私は衝動を理解していますが、ここで感謝を書く必要はありません。ちょうどupvoteの答えが好きで、それがあなたの問題の解決策ならば、それを正解とマークするべきです。 –
関連する問題
- 1. Boost.Process:キャプチャされたstdoutがサイズXまでバッファされます
- 2. バッファをboost :: asio :: bufferに送信した後にバッファを削除する必要がありますか?
- 3. JSONエンコードされたバッファのデータが正しくエンコードされていません
- 4. numpy.frombuffer ValueError:バッファが要求されたサイズより小さい
- 5. strncpy_s - バッファが小さすぎるアサーション
- 6. KryoException:バッファが小さすぎる
- 7. バッファされた/バッファされていないチャンネル
- 8. すべてのVIバッファに開いた多くのバッファ付き
- 9. バッファなしのI/OとバッファされたI/Oの比較
- 10. グラフィックカードメモリにバッファされたデータを再配置するwebgl?
- 11. バッファに格納されたデータを取得する方法
- 12. バッファされたものとバッファされていないものIO
- 13. バッファにチャネルが書き込まれている間にバッファを書き込もうとしています
- 14. VIM内の空のバッファをすべて削除する
- 15. GetUserNameEx()が返すバッファのサイズ
- 16. どのようにバッファを使用してバッファ内のバイトを逆にする
- 17. メモリから再生された最後のバッファを削除する
- 18. exeは、最大の宣言されたバッファよりも小さくすることはできますか?
- 19. COMport.Readline()問題:バッファされたバッファと文字列の操作
- 20. C:文字列がバッファから正しくコピーされない
- 21. バッファが小さすぎる場合は例外を防止しますか?
- 22. C++フォーマットされたデータをstd :: coutまたはファイル(バッファ)に出力する
- 23. Oracleストアドプロシージャで文字列バッファが小さすぎます
- 24. vim - バッファリストにリストされていない、削除されたバッファの再オープン
- 25. データを適合させるためにバッファを調整できません
- 26. ノードJS内のあるバッファを別のバッファにコピーできません
- 27. グーグルビッグクエリ - バッファからデータをフラッシュする(バッファ上の4日間のデータ)
- 28. Python Twisted - TelnetやSSHでバッファされた/バッファされない入力を制御する方法は?
- 29. バッファのサイズを選択する
- 30. 出力バッファはint32型ですが、渡されるバッファのelem_sizeは4ではなく1です。
を参照してください?メモリの圧力がない場合、論理的な処理はバッファの最大サイズを変更すること以外は何もしません。 –
私はまだcの初心者ではないので、私はまだcのすべての仕組みを知らない。 –
それはもっと修辞的な質問だった。 –