問題タブ [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 投票する
1 に答える
426 参照

c++ - C++ アロケーター::deallocate(NULL,1) は許可されますか?

free(NULL)との両方::operator delete(NULL)が許可されます。アロケータの概念 (例: std::allocator も許可deallocate(NULL,1)されていますか、それとも独自のガードを配置する必要がありますか?

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

c - Cでは、終了時にポインターを解放する必要がありますか?

重複の可能性:
C アプリケーションを終了すると、malloc されたメモリは自動的に解放されますか?

Cでは、終了時にポインターを解放する必要がありますか? プログラムが存在する場合、割り当てられたブロックを指しているポインタからメモリを解放しますか?

OS依存ですか?

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

c++ - g ++ダブルフリーまたは破損...しかし、どうやって?

コードに問題があるようで、問題を特定するのに役立つかどうか疑問に思いました... gdbとvalgrindを使用してみましたが、後者の方が便利ですが、それでもバグを修正できません。

以下は私のクラスのコードです(これは私の縮小版ですが、問題の主な本質は残っています):

/ * Vector.h * /

/ * PhysicalState.h * /

/ * PhysicalState.cpp * /

/ * Test.cpp * /

長さについて申し訳ありません。valgrindからの出力は次のとおりです。

これを手伝ってくれる人に事前に感謝しますそれは私を夢中にさせています!! GD。

PS:me =(* this); 何もない=0;

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

c++ - 新規、削除、malloc、無料

この質問はインタビューで私に尋ねられました:

C ++では、

  1. mallocを使用してメモリを割り当てdelete、その割り当てられたメモリを解放するために使用するとどうなりますか?
  2. を使用してメモリを割り当て、を使用newして解放するとどうなりfreeますか?

上記のものがコードで使用された場合に直面する問題は何ですか?

私の答えは違いはないということでした。私はそう言ったのは正しかったですか?

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 が失敗した後に終了します。)

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