私の質問はちょっと混乱しますが、バッファを最小限に抑えたら、データの左に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. numpy.frombuffer ValueError:バッファが要求されたサイズより小さい
- 4. KryoException:バッファが小さすぎる
- 5. バッファされた/バッファされていないチャンネル
- 6. バッファなしのI/OとバッファされたI/Oの比較
- 7. すべてのVIバッファに開いた多くのバッファ付き
- 8. グラフィックカードメモリにバッファされたデータを再配置するwebgl?
- 9. バッファされたものとバッファされていないものIO
- 10. バッファにチャネルが書き込まれている間にバッファを書き込もうとしています
- 11. VIM内の空のバッファをすべて削除する
- 12. GetUserNameEx()が返すバッファのサイズ
- 13. メモリから再生された最後のバッファを削除する
- 14. exeは、最大の宣言されたバッファよりも小さくすることはできますか?
- 15. COMport.Readline()問題:バッファされたバッファと文字列の操作
- 16. バッファが小さすぎる場合は例外を防止しますか?
- 17. C++フォーマットされたデータをstd :: coutまたはファイル(バッファ)に出力する
- 18. vim - バッファリストにリストされていない、削除されたバッファの再オープン
- 19. Oracleストアドプロシージャで文字列バッファが小さすぎます
- 20. データを適合させるためにバッファを調整できません
- 21. ノードJS内のあるバッファを別のバッファにコピーできません
- 22. Python Twisted - TelnetやSSHでバッファされた/バッファされない入力を制御する方法は?
- 23. バッファのサイズを選択する
- 24. バイナリjpgデータをバッファにコピーする
- 25. C++からNodeJSにバッファを渡すと、データが消えます
- 26. Netty 4におけるバッファの所有権:バッファのライフサイクルはどのように管理されますか?
- 27. STM32 USBバッファが正しく検索されない
- 28. 「デバッグアサーションに失敗しました。バッファが小さすぎます」をデバッグするには?
- 29. Rの空間点データの周りにバッファを作成し、バッファ内のポイント数をカウントします。
- 30. fread:バッファのサイズを知るには?
を参照してください?メモリの圧力がない場合、論理的な処理はバッファの最大サイズを変更すること以外は何もしません。 –
私はまだcの初心者ではないので、私はまだcのすべての仕組みを知らない。 –
それはもっと修辞的な質問だった。 –