2つの異なる配列にそれぞれ100万個のセルを動的に割り当てました。 1つの配列は整数を保持し、1つの配列は固定長の文字列へのポインタを保持します。 gdbを使用してプログラムを実行すると、エラーが発生します:free(): invalid next size (fast)
。私は違法な方法で記憶を解放する必要がありますが、私はどのように把握することはできません。 mallocとfreeを使用している場所の下に、私のコードの簡単なスニペットを掲載しました。私が間違ってやっていることを教えてくれますか?ありがとうございました。malloc()とfree()の動的メモリの問題
答えて
ちょっと変わったことを除いて(iharobのコメントを参照)、あなたが私たちに示しているコードが正しいように見えます。
エラーは、あなたが私たちに見せているコードにはおそらく含まれていません。
おそらく起こっているのは、あなたの文字の「言葉」を埋めて、wc->allWords[i]
のアドレスから20文字以上を格納しているということです。だから、あなたは記憶のブロックの終わりを過ぎて、そして次の記憶ブロックのヘッダーの上に書いています。
次に、解放しようとしているブロックのアドレスは正しいですが、ブロックのヘッダーが破損しているため、free()
は失敗します。
ありがとう、私はそれを見ていきます。また、「ヘッダーを傷つけた」とはどういう意味ですか? – TheEyesHaveIt
この場合、「破損」は「上書き」を意味します。 Cランタイムにはいくつかの値が格納されていて、それらの上に文字が書き込まれている可能性があります。 –
あなたは正しかった、問題は他のところでした。 – TheEyesHaveIt
- 1. C mallocとfree
- 2. Cプログラミング-Malloc/Free
- 3. mallocラッパーコードの問題
- 4. 問題malloc
- 5. Free Pascalと配列型の問題
- 6. C mallocとfreeは動作しません。
- 7. Mallocのメモリに関する質問
- 8. のmallocメモリは
- 9. mallocさメモリとSIGSEGV
- 10. もう1つのmalloc/freeジレンマ
- 11. 目的のメモリの問題C
- 12. 目的Cメモリ管理の問題
- 13. MySQLとJava - メモリの問題
- 14. リンクとメモリの問題に
- 15. glGenTexturesスピードとメモリの問題
- 16. ループスコープとメモリの問題
- 17. アレイとアレイ、メモリの問題
- 18. UIImageとメモリの問題(contentsOfFile)
- 19. C malloc + freeはメモリ使用量を増加させています
- 20. Objective-Cオブジェクトでmalloc/freeを使用
- 21. C - Mallocとmemcpy(メモリ管理)
- 22. HTMLとJavaScriptの動的テーブルの問題
- 23. mallocをオーバーライドする際の問題
- 24. runtime.getruntime.execのメモリ問題
- 25. UIAutomationメモリの問題
- 26. imagecreatefromjpegメモリの問題
- 27. NSStringのメモリ問題
- 28. Androidメモリの問題
- 29. Tomcatメモリの問題
- 30. 4.2のメモリ問題?
* 1つの配列は、固定長の文字列へのポインタを保持します。*次に、 'malloc()'を使用しないでください。また、 'malloc()'の戻り値を 'NULL'に照らしてチェックし、' x - > y 'と書くのは恐ろしいです、 'x-> y'だけが良いです。他の演算子と違って、 '.'も同じです。 –
解放関数に正しいポインタを渡したか、2回も実行していませんか? –
@iharob、申し訳ありませんが、将来私は100万個の細胞を使用していないかもしれないと言及しておくべきです、それは入力によって変わるかもしれません。 – TheEyesHaveIt