問題タブ [free]

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.

0 投票する
3 に答える
303 参照

c - cループの部分文字列を解放する

構造体''の各メンバーのサブ文字列を取得し、structsそのサブ文字列をの新しいメンバーに割り当てようとしていtemp_structます。私が抱えている問題は、反復ごとにサブ文字列を解放する方法です。何らかの理由でコードは実行されますが、がvalgrindスローInvalid read of size 1されます。これは、メモリのブロックを読み取っていると思います。

どうすればサブストリングを解放できますか?

ありがとう

0 投票する
5 に答える
4885 参照

c - reallocとfreeは、「doublefreeまたはcorruption」を引き起こします

我慢して。私は8年間cでコーディングしておらず、文字列操作が機能しない理由に完全に困惑しています。私は永遠にループするプログラムを書いています。ループでは、2つのcharポインターを初期化し、それぞれがcharポインター(配列)にテキストを追加する関数に渡されます。関数が完了したら、charポインターを出力し、2つのcharポインターを解放します。ただし、プログラムは7回の反復後に終了し、次のエラーメッセージが表示されます。

*glibcが検出されました* ./test:ダブルフリーまたは破損(ファストトップ):0x0804a168 ***

0 投票する
5 に答える
281 参照

c - cでダブルフリーを行わずに部分文字列を解放する

昨日、にメモリを割り当てる方法について同様の質問をしました。同じ問題 (一連の条件を含む) に関してもう 1 つ質問があります。二重解放を行わずに次の部分文字列を解放するにはどうすればよいでしょうか?freesub-string

0 投票する
2 に答える
10821 参照

c - これは、ヒープの破損が原因である可能性があります。これは、cvector.exe または読み込まれた DLL のバグを示しています。

私はテストプログラムで多くの間違いを犯します!!!

ソースのデバッグ: http://www.cppblog.com/Files/mymsdn/cvector-windows-has-triggered-a-breakpoint-in-cvector.zip

正しいバージョン: http://www.cppblog.com/Files/mymsdn/cvector-svn-version-10.zip

ベクトル構造の C 言語バージョンを作成しようとしています。

コードを実行しようとすると (Microsoft Visual Studio 2008 では、デフォルトのショートカットは CTRL+F5 です)。正しい結果を出力する正しい論理として実行できます。

しかし、デバッグモードで実行しようとすると(Microsoft Visual Studio 2008では、デフォルトのショートカットはF5です)。問題が発生します: (これは出力ウィンドウからのものであり、それを報告するアラート フレームもあります)

ヒープ [cvector.exe]: ヒープ: 解放された後、393190 で変更された解放ヒープ ブロック 393168 Windows は、cvector.exe でブレークポイントをトリガーしました。

これは、ヒープの破損が原因である可能性があります。これは、cvector.exe または読み込まれた DLL のバグを示しています。

これは、cvector.exe にフォーカスがあるときにユーザーが F12 キーを押したことが原因である可能性もあります。

出力ウィンドウには、より多くの診断情報が表示される場合があります。

エラー
(ソース: cppblog.com )

0 投票する
2 に答える
1084 参照

delphi - FreeMem(Delphi 32)を呼び出す前にメモリが割り当てられているかどうかを確認する

オブジェクトがなんらかの方法で解放されるというエラーが発生しましたが、オブジェクトに対してFreeMemを呼び出すことになります。もちろん、メモリはすでに解放されており、エラーがスローされるため、これによりエラーが発生します。

try-catchブロックでおそらく修正されることはわかっていますが、それは多くのtry-catchブロックです。通常のobject.freeでは、これを回避する方法はFreeAndNil(object)ですが、FreeMemに相当するものが見つかりません。解放する前に割り当てられているかどうかをテストするもの。

読みやすさ、保守性、安定性の点で、ここでの最善の解決策は何ですか。

0 投票する
7 に答える
1555 参照

c - 異常終了時に割り当てられたメモリを解放する必要がありますか?

私のプログラム (テキストモードの Web ブラウザ) は動的にメモリを割り当てています。

もちろん、実行時に不要なブロックを解放します。そして、通常の終了前にすべてを解放します。これにより、メモリ リーク チェッカーが誤検出を起こさないようにします (また、主要なリファクタリングが必要になった場合に柔軟に対応できるようにします)。

今、私がしていないのは、異常終了する前にメモリを解放することです。(現在、私のプログラムはシグナルで終了し、mallocs/reallocs が失敗した後に終了します。)

私の質問は、このスタイルが悪いと思いますか? 異常終了時に解放する必要がありますか?

0 投票する
3 に答える
620 参照

iphone - free() 呼び出しはシミュレーターで機能し、iPad を怒らせます。iPadスマッシュ

アプリのメモリが不足しています。これを解決するために、フレームバッファーを画像に書き込む関数で使用されている 2 つの非常に大きな配列を解放します。メソッドは次のようになります。

最後に free(buffer) と free(buffer2) の 2 つが呼び出されていることに注意してください。これらは iPad シミュレーターで問題なく動作し、メモリの問題を取り除き、無礼に生成できるようにします。ただし、iPad は即座に殺されます。同様に、初めて実行します。free() 呼び出しを削除すると、問題なく実行されますが、1、2 分後にメモリが不足します。では、なぜ free() 呼び出しがデバイスをクラッシュさせるのでしょうか?

注 - デバイスを明示的にクラッシュさせるのは free() の呼び出しではなく、後でクラッシュします。しかし、それが根本的な原因のようです/..

編集 - 誰かが正確にクラッシュする場所について尋ねられました。このフローは、画像を別のオブジェクトに返し、ファイルに書き込みます。「UIImageJPEGRepresentation」メソッドを呼び出すと、EXT_BAD_ACCESS メッセージが生成されます。これは、ファイルに書き込むために渡す UIImage が破損しているか、null であるか、または他の何かであることが原因であると想定しています。しかし、これは、これら 2 つのバッファーを解放したときにのみ発生します。

メモリが何らかの形で UIIMage に関連しているかどうかは理解できますが、特にシミュレータで動作するため、実際にはそうすべきではありません。iPadが「無料」通話を処理する方法にかかっているのではないかと思いました...

0 投票する
6 に答える
1570 参照

c - Cでエラーチェックを行うたびに、freeの長いチェーン(または削除)を回避するにはどうすればよいですか?

コードを非常に防御的に記述し、呼び出すすべての関数からの戻り値を常にチェックするとします。

だから私は次のようになります:

free()物事がいかに早く制御不能になるかに注目してください。一部の関数が失敗した場合は、前にすべての割り当てを解放する必要があります。コードはすぐに醜くなり、私がすることはすべてをコピーして貼り付けることだけです。私はコピー/貼り付けプログラマーになります。さらに悪いことに、誰かがその間にステートメントを追加した場合、彼はfree()追加を呼び出すために以下のすべてのコードを変更する必要があります。

経験豊富なCプログラマーはこの問題にどのように取り組んでいますか?何もわからない。

ありがとう、BodaCydo。

0 投票する
2 に答える
400 参照

c - Cで可変サイズの構造体を解放する

次のように、可変サイズのC構造体を使用しています。

この最後のfree()は、mallocされたすべてのものを解放しますか、それともsizeof(mystruct)のみを解放しますか?

0 投票する
1 に答える
156 参照

objective-c - 配列の malloc() された配列の運命について

Stackoverflow に関する私の最初の質問。

少しコードから始めましょう。少し繰り返しが多いので、異なる配列で繰り返す部分を切り取ります (他の部分についてはお気軽にお問い合わせください)。ただし、下部の Q に回答するよりも、コードを無視してください。まず、事前に回答者に感謝します。第二に、データの解放。

(この呼び出しについてはすぐに説明します)。ここで、配列を malloc() します。

最後に、すべてを呼び出すビット (これは別のクラスです。)

ここで行っているのは、分子を PDB ファイルからメモリにロードし、それを OpenGL ビュー ウィンドウに表示することです。分子を 2 回目にロードすると (これはloadPDB:上で実行されます)、Giant Triangle Syndrome と関連する効果が発生します... 分子の上に大きな三角形が表示されます。

ただし、新しい分子をロードするたびに、PDBHelper と ES1Renderer を解放して再割り当てしています。したがって、私は疑問に思っていました:

1. クラス全体の変数として宣言した helixVertices、helixIndices、および helixColors が実際にこのインスタンスで再利用されるかどうか。それらは同じオブジェクトを指していますか?
2. 解放後にすべての変数を NULL に設定する必要がありますか? セグメンテーション違反を取得してバグを拾うために、とにかくこれを行う予定ですが、それを組み込むことはできていません。3. クラス変数を malloc() するのは正しいですか? これを達成するためのより良い方法はありますか?それ以外の方法でこの情報をレンダラーに提供する既知の方法はありません。