問題タブ [realloc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - gdb はエラーを出しますが、プログラムは正常に実行されます
文字配列へのポインターを持つ単純な C プログラムがあります。それを開始するには、 を使用malloc
し、サイズを変更してから、後でプログラムで x 回設定します。
でサイズを一度変更するとrealloc
、gdbはエラーを表示しませんが、サイズ変更関数を再度呼び出すと、gdbは次のエラーを表示します。
サイズを複数回変更すると、このエラーが発生する理由はありますか?
編集
いろいろいじってみたところ、リサイズ後のポインタデータの設定をコメントアウトしてもエラーにはならないようです。
c++ - memcpy と realloc にはどのヘッダーを含める必要がありますか?
私はプロジェクトを iPhone に移植していますが、それはrealloc
andmemcpy
が見つかりません。含めるヘッダーは何ですか?
これは、Objective C と C++ を組み合わせたプロジェクトであり、道に迷い始めています。
よろしくお願いします。
c - Cで無制限の文字を読む方法
char*
サイズを指定せずに無制限の文字を変数に読み込む方法は?
たとえば、従業員の住所を読みたいとしますが、これも複数行になる可能性があります。
c - 新しいブロックサイズが最初のブロックサイズよりも小さい場合は、reallocチェックを強制する必要がありますか?
この場合、reallocは失敗する可能性がありますか?
}
私の場合の出力は次のとおりです。
したがって、「a」は同じアドレスを指します。では、reallocチェックを強制する必要がありますか?
後で編集:
- WindowsXPでのMinGWコンパイラの使用。
- Linuxのgccと同様の動作ですか?
後で編集2:この方法で確認しても大丈夫ですか?
c - 再割り当てし、新しいサイズが 0 の場合はどうなりますか? これは空きと同等ですか?
次のコードがあるとします。
戻り値:
この realloc は free と同等ですか?
注: WindowsXP で MinGW を使用しています。
c - recv()で使用されるバッファのrealloc()メモリ
ソケットからデータをrecv()してバッファーに格納する必要がありますが、ループ内にあるように、すべてのデータを確実に取得する必要があります。したがって、バッファのスペースが不足しないようにするために、reallocを使用してバッファに割り当てられたメモリのサイズを変更しようとしています。これまでのところ:
ただし、Valgrindが「valgrind:「不可能」が発生しました:」と不平を言っているため、これは正しく機能していないようです。これを適切に行う方法について何かアドバイスはありますか?
ありがとう、Hristo
更新...reallocを誤って使用していることに気付きました。改訂版は次のとおりです。
ただし、valgrindはまだ不平を言っています:
memory-management - reallocは、小さい(<500Kb)データブロックを割り当てている間、しばらくするとNULLを返します。記憶があります
やあ!
簡単な質問は、何が問題になる可能性があるかということです。
私のプログラムの全体的なメモリ使用量(タスクマネージャーによって表示される)は、実行中はほぼ常に(40分近く)同じであり、2G近くの空きメモリがあります。
win2003r2で実行されています。
メモリの割り当て/解放は十分に高いです-他のソフトウェアと対話し、そのデータを準備し、古い場合は削除する必要があります。データブロックの数は一定ではありません。
ありがとうございました!
c++ - C ++でキャストされたreallocにより、メモリリークが発生する
ここで見つけた関数を使用して、cURLを使用してWebページをメモリに保存しています。
次の行を見つけます。
呼び出しごとに数百バイトのメモリリークが発生しています。元のソースから行った唯一の実際の変更は、問題の行を(char *)にキャストすることです。これは、私のコンパイラ(gcc、g ++、特にac / c ++の問題の場合)ですが、gccもキャストされていない状態ではコンパイルされません。ステートメント)が主張しましたが、これがリークの原因であると思います。誰でも解明できますか?
ありがとう
c - 再割り当て中に lua から callin' c がクラッシュする
そのforループ内でクレイジーなエラーが発生しました
matr は多次元配列です: int **matr. 列と行のサイズを変更する必要があります。最初の行は列のサイズを変更し、for ループはすべての行のサイズを変更します。cでうまくいきました。現在、lua のライブラリに取り組んでいますが、ここでクラッシュします。コンパイルもうまくいきます。しかし、luaから呼び出すとクラッシュします
Cでそれを使用して正常に動作しているので、私にはまったくわかりません。
c++ - 奇妙な再割り当ての動作
私は楽しみのために配列構造を開発しています。テンプレート パラメーターによって一般化されたこの構造体は、起動時に指定された数のアイテムを事前に割り当てます。次に、「ビジー」なアイテムが使用可能なアイテムよりも多い場合、関数は内部バッファーを再割り当てします。テストコードは次のとおりです。
ご覧のとおり、最初に 100 個の整数ポインターを事前に割り当ててから、さらに 10 個のポインターを使用してそれらを再割り当てします。メイン関数では、for ループを実行して項目の整合性をチェックし、配列項目が期待どおりでない場合は、その値を出力して ... わかりますか? 次のメッセージがあります。
!!! 11 != 135121
実際、'11' であるべきインデックス 11 の項目は 135121 です !!!! :S
私のコードが正しくないかどうか教えてもらえますか?
ありがとう
注: このように C と C++ を混在させるのは見苦しいことを私は完全に知っています。また、この構造を使用すると台無しになることも知っています。
これは int ポインタの単なるテストです。