問題タブ [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.
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が「無料」通話を処理する方法にかかっているのではないかと思いました...
c - Cでエラーチェックを行うたびに、freeの長いチェーン(または削除)を回避するにはどうすればよいですか?
コードを非常に防御的に記述し、呼び出すすべての関数からの戻り値を常にチェックするとします。
だから私は次のようになります:
free()
物事がいかに早く制御不能になるかに注目してください。一部の関数が失敗した場合は、前にすべての割り当てを解放する必要があります。コードはすぐに醜くなり、私がすることはすべてをコピーして貼り付けることだけです。私はコピー/貼り付けプログラマーになります。さらに悪いことに、誰かがその間にステートメントを追加した場合、彼はfree()
追加を呼び出すために以下のすべてのコードを変更する必要があります。
経験豊富なCプログラマーはこの問題にどのように取り組んでいますか?何もわからない。
ありがとう、BodaCydo。
c - Cで可変サイズの構造体を解放する
次のように、可変サイズのC構造体を使用しています。
この最後のfree()は、mallocされたすべてのものを解放しますか、それともsizeof(mystruct)のみを解放しますか?
objective-c - 配列の malloc() された配列の運命について
Stackoverflow に関する私の最初の質問。
少しコードから始めましょう。少し繰り返しが多いので、異なる配列で繰り返す部分を切り取ります (他の部分についてはお気軽にお問い合わせください)。ただし、下部の Q に回答するよりも、コードを無視してください。まず、事前に回答者に感謝します。第二に、データの解放。
(この呼び出しについてはすぐに説明します)。ここで、配列を malloc() します。
最後に、すべてを呼び出すビット (これは別のクラスです。)
ここで行っているのは、分子を PDB ファイルからメモリにロードし、それを OpenGL ビュー ウィンドウに表示することです。分子を 2 回目にロードすると (これはloadPDB:
上で実行されます)、Giant Triangle Syndrome と関連する効果が発生します... 分子の上に大きな三角形が表示されます。
ただし、新しい分子をロードするたびに、PDBHelper と ES1Renderer を解放して再割り当てしています。したがって、私は疑問に思っていました:
1. クラス全体の変数として宣言した helixVertices、helixIndices、および helixColors が実際にこのインスタンスで再利用されるかどうか。それらは同じオブジェクトを指していますか?
2. 解放後にすべての変数を NULL に設定する必要がありますか? セグメンテーション違反を取得してバグを拾うために、とにかくこれを行う予定ですが、それを組み込むことはできていません。3. クラス変数を malloc() するのは正しいですか? これを達成するためのより良い方法はありますか?それ以外の方法でこの情報をレンダラーに提供する既知の方法はありません。
c - free()を実行した後、ポインタをNULLに設定することは常に良い習慣ですか?
重複の可能性:
解放後に変数をNULLに設定…
私は優れたCプログラミング手法について学んでおり、友人は、ポインターをfree()した後(または特定の解放関数を呼び出した後)は常にポインターをNULLに設定するように言ってきました。
例えば:
また
なぜこれが良い習慣なのですか?
更新:答えを読んだ後、それは私にはひどい習慣のようです!double-free()エラーの可能性を隠しています。どうすればこれが良い習慣になるのでしょうか?びっくりしました。
ありがとう、BodaCydo。
c - これはCでダブルフリーですか?
通常、ポインタが2回解放されると、2回解放されます。例えば、
上記のコードはダブルフリーと見なされます。以下もダブルフリーと見なされますか?
ありがとうございました。
c - char* が C の文字列リテラルを指しているかどうかを確認する方法
私は構造体を持っています
ちゃんと解放したい。
私はそれを行うために次の機能を持っています:
問題は、文字列リテラルを使用して作成された要求を解放しようとすると、コンパイラから "free(): 無効なポインター"/segfault エラーが発生することです。
別の場所でリクエスト構造体を作成したいので、リテラルを使用して(クライアント側で)、ソケットから読み取った *chars を使用して(サーバー側で)、 malloc を使用して作成したメッセージを解放できる一方で、リテラルを解放しようとしないでください。
c++ - VC を使用して win32 でテキスト読み上げフェスティバルの音声フリー ライブラリをコンパイルする方法
ロボットではなくヒューマンボイドを使用して、テキスト読み上げをアプリケーションに埋め込む必要があります。
フェスティバルライブラリについて見つけましたが、それはうまく縫い合わされています。唯一の問題は、ドキュメントを読んだ後です。Windowsで
動作するかどうかわかりません。
誰かが sygwin なしで Windows で lib をコンパイルできましたか?
c - 「char」を使用したブール配列
char に格納された 8 つのブール値の配列を実際に表すオブジェクトを作成しました。ビット単位の演算子と、C で独自のオブジェクトを作成する方法についてさらに学習するために作成しました。2 つの質問があります。
- 以下のコードが常に機能するかどうかを確認できますか?
- これは、自分でリリースしない限り、C で失われないオブジェクトを作成するための適切な実装です。
コード:
私はどちらかというと Objective-C 派ですが、もっと C を学びたいと思っています。自分自身を改善できる「宿題」を誰かリクエストできますか?
ありがとう、ief2
c - フリーステートメントにサイズが記載されていない理由
皆さんこんにちは、
free(pointer) を定義すると、OS はどのくらいのサイズを解放する必要があるかを知るようになります。つまり、 size は提供せず、free ステートメントへのポインターのみを提供します。サイズを内部でどのように処理しますか?
ありがとう、ニール