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

c - malloc()の奇妙な振る舞い

私の質問に対する答えを理解しようとしています

要求された以上の量を割り当てるヒープマネージャによって割り当てられたメモリを解放しようとするとどうなりますか?

私はこの関数を書き、その出力に戸惑いました

出力

誰かがこの振る舞いを説明できますか?または、この実装は特定のものですか?

また、free(q)がコメント化されていない場合、SIGABRTを取得しています。

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

c++ - ヒープ破損の問題

テンプレート関数内には、次のコードがあります。

これにより、「HEAP CORRUPTION DETECTED」エラーが発生します。free() 関数を呼び出さない場合、エラーは発生しませんが、メモリ リークが発生しているのではないかと心配しています。 「ストレージ」の値を取得してから、メモリの割り当てを解除しますか?

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

c - C リンク リストのメモリ使用量 (メモリ リークの可能性)

単純なプログラムであるべきものに問題があります。

void*ポインターを使用して、C で単一の連結リストの実装を作成しました。ただし、どこかにメモリリークの可能性があるため、問題がありますが、valgrind を使用してコードをチェックしたところ、そのようなエラーは検出されませんでした。

しかし、すべてのメモリがfree解放されても、まだ解放されていないメモリがあります(コメントを参照)...参照によって追加関数にすべてを渡そうとしましたが、これでも問題は解決しませんでした。

ここの誰かがコードを見てコメントを持っているかどうか疑問に思いました. (これは簡単なはずですよね?)

ありがとう!

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

c - Cの動的データ型としてvoid*を使用するモジュラーコードに関するいくつかの質問

数日前、私はこの質問を投稿しました、そして、誰もが私に使用するように提案しましたvoid*、それは私がしました。それらのいくつかは私が世話をする必要があるいくつかのことも指摘したと思いますが、それらが正確に何であったかはわかりません。しかし、私はこれに関していくつかの問題を抱えています...

非常に大きいコードをすべて投稿するのではなく、重要だと思うものを投稿します。うまくいけば、あなたが私を助けてくれるのに十分です。

私のハッシュテーブル構造は次のようなものです。

私の挿入関数の署名は次のようになります。

そして、その関数内のどこかで、ハッシュテーブルに空きバケットが見つかったら、次のようにします。

これにはいくつかの問題があります。

1)上記のように、フリーバケットの各キー/値ペアを、キー/値hashInsert関数の引数として渡されたのと同じポインターに設定しているだけです。すでにお気づきかもしれませんが、これは問題を引き起こします...たとえば、次のようなことをします。

また、入力が「KeyA」、次に「KeyB」の場合、両方のバケットキーとして「KeyB」が使用されます。キーだけでなく値にも同じことが当てはまります。これは、どのデータ型でもコードを完全にモジュール化するため、基本的に同じ型であるためです。

どうすればこれを解決できますか?

私の最初は、それを使用strdup(str)して関数に渡すことhashInsertです。それで問題は解決します。また、これはメインコードで処理されたmalloc()ため、値として渡す必要のある他のデータ型にも簡単に使用できます(キーはおそらく常に文字列または整数になります)。

しかし、この解決策には別の問題があります...

2)この割り当てられたメモリをどのように解放する必要がありますか?確かに、それは「ハッシュテーブルモジュールプログラマー」ではなく「メインプログラマー」によって割り当てられたので、「メインプログラマー」はメインコードでそれを解放する必要がありますよね?しかし、それは私にはモジュラーコードのようには見えません。

私のコードにはhashDestroy、割り当てられたすべてのメモリを解放する機能もあります。しかし、どうすればこの関数を使用してすべてを解放できますか?すべてのキー/値を繰り返し処理して使用することはできません。そもそもfree()それらの一部はmalloc'dプログラマーによるものではなく、解放する必要がないためです。

hashDestroy解放しなければならないものと解放してはいけないものをどのように見つけることができますか?

3)最後に、この問題をミックスに入れることもできると思います...ポイント1で、私の提案は、その特定の問題を使用strdup()またはmalloc「修正」することでしたが、それはあまりモジュール化されていないように見えます私に。このメモリ割り当ては、「メインプログラマ」によるメインコードではなく、ハッシュテーブルモジュールコードで行う必要があります。

私がこれを解決することをどのように提案しますか?つまり、データ型は何でもかまいません。を使用すると非常にstrdup()役立ちますが、文字列に対してのみ機能します。特定の構造またはintだけにメモリを割り当てる必要がある場合はどうなりますか?

大きな投稿で申し訳ありませんが、これらの質問はすべて関連していると思います。私のCの知識はそれほど極端ではないので、それらを理解するのに助けが必要です。私は最近そのことを知りましvoid*た...

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

c++ - 無料のクロス プラットフォーム ネットワーク/スレッド/xml 静的ライブラリが欲しい

使いやすく、windows Express と 2008 コンパイラでコンパイルするのに問題がない最高の C++ ライブラリは何ですか? 目的ごとに異なるライブラリを使用するのが最善ですか、それとも1つの汎用ライブラリを使用するのが最善ですか?

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

c++ - C++ 静的変数の解放

クラスに、動的に割り当てられたメモリ領域への静的ポインタを持たせたいと考えています。私はそれを初期化する方法を理解しています - 私の場合、最初のオブジェクトがそれを必要とするときに初期化します。ただし、コードのどこでいつ解放するのかわかりません。プログラムが終了したら解放したいと思います。

オブジェクトのデストラクタでポインタを解放できるかもしれませんが、そのオブジェクトが最後に使用されたときに解放しても安全かどうかを確認するために、オブジェクトの数を維持する必要があります。

これを行うよりエレガントな方法はありますか?

私にお知らせください。

ありがとう、ジブ

0 投票する
8 に答える
14858 参照

c - ポインタを解放することとNULLに割り当てることの違いは何ですか?

誰かが私に違いを教えてもらえますか?

また

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

c++ - c++ フリー (gpl なし) Web サービス フレームワーク

GPLではない優れたフリーウェアを探していますc ++ Webサービスフレームワーク私はAXIS2を使用しましたが、私たちのニーズには適していません.たとえば、gSoapのように優れた堅牢なフレームワークはありますか.

0 投票する
8 に答える
23129 参照

c - C Programming: malloc and free within a loop

I just started out with C and have very little knowledge about performance issues with malloc() and free(). My question is this: if I were to call malloc() followed by free() inside a while loop that loops for, say, 20 iterations, would it run slower compared to calling free() outside the loop?

I am actually using the first method to allocate memory to a buffer, read a variable-length string from a file, perform some string operations, and then clear the buffer after every iteration. If my method results in a lot of overhead then I'd like to ask for a better way for me to achieve the same results.

0 投票する
9 に答える
16414 参照

c++ - メモリを 2 回解放する

C および C++ では、NULL ポインターを解放しても何も起こりません。

それでも、「メモリを 2 回解放する」とメモリ破損が発生する可能性があると言う人を見かけます。

これは本当ですか?メモリを 2 回解放すると、内部で何が起こっているのでしょうか?