問題タブ [malloc]
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.
c - realloc() で二重解放エラーまたは破損エラーが発生するのはなぜですか?
char *
を使用して割り当てられた で動作する文字列置換関数を C で記述しようとしましたmalloc()
。開始文字列の文字ではなく、文字列を検索して置換するという点で少し異なります。
十分なスペースが割り当てられているため、検索文字列と置換文字列が同じ長さ (または置換文字列が検索文字列より短い) の場合は簡単です。を使用しようとするとrealloc()
、ダブル フリーを実行していることを示すエラーが表示されますrealloc()
。
おそらく、ちょっとしたコードが役に立ちます:
プログラムrealloc()
は、置換された文字列が最初の文字列よりも長くなるインスタンスで試行するまで機能します。(それはまだ動作しますが、エラーと結果を吐き出すだけです)。
それが役立つ場合、呼び出しコードは次のようになります。
performance - マルチコア マシンでのマルチスレッド アプリケーションのスケーリング
より多くのパフォーマンスが必要なプロジェクトに取り組んでいます。時間の経過とともに、(スレッドと分散の両方で) より並列に動作するように設計を進化させ続けてきました。その後の最新のステップは、その一部を 16 コアの新しいマシンに移動することでした。共有メモリ モデルでこれほど多くのコアにスケーリングする方法を再考する必要があることがわかりました。たとえば、標準のメモリ アロケータでは十分ではありません。
人々はどのリソースを推奨しますか?
これまでのところ、Sutter のコラム Dr. Dobbs が良い出発点であることがわかりました。The Art of Multiprocessor Programming と Intel Threading Building Blocks に関する O'Reilly の本を手に入れました
c - malloc()/free() のアラインメント制限
以前の K&R (第 2 版) および私が読んだ他の C 言語のテキストでは、動的メモリ アロケータの実装について次のように説明されていmalloc()
ますfree()
。どうやら、特定のコンピューター ハードウェア アーキテクチャ (CPU、レジスタ、およびメモリ アクセス) によって、特定の値の型を格納およびアドレス指定する方法が制限されているようです。たとえば、4long
の倍数のアドレスから始まる 4 バイト ( ) の整数を格納する必要がある場合があります。
メジャー プラットフォーム (Intel & AMD、SPARC、Alpha) がメモリ割り当てとメモリ アクセスに課す制限はありますか? または、特定のアドレス境界でのメモリ割り当ての調整を安全に無視できますか?
memory - mallocをログに記録する方法
これは少し架空で大幅に簡略化されていますが...
サードパーティによって作成された関数を呼び出すプログラムを想定します。これらの当事者は敵対的ではないと見なすことができますが、「有能」であると見なすことはできません。各関数はいくつかの引数を取り、副作用があり、値を返します。実行されていない間は状態がありません。
目的は、すべてのmalloc(など)をログに記録し、関数の終了後にすべてを解放することで、メモリリークを引き起こさないようにすることです。
これは可能ですか?これは実用的ですか?
ps私にとって重要なのは、割り当てが持続しないようにすることです。そのため、それを行わずにメモリリークを削除する方法は、私には役立ちません。
c - 関数呼び出し内のMallocは、戻り時に解放されているように見えますか?
私はそれを最も基本的なケースに落とし込んだと思います:
出力は次のとおりです。
私の理解がどこで失敗しているのかを誰かが明らかにすることができれば、それは大いにありがたいです。
c - スタックオーバーフローの原因は何ですか?
これは私の質問のトピックがフォーラムの名前に似ているという偶然の一致だと思われるかもしれませんが、実際には「スタックオーバーフロー」という用語をグーグルで検索してここに到達しました。
Cを使用してプログラムするOPNETネットワークシミュレータを使用しています。大きな配列サイズで問題が発生していると思います。ある種のメモリ割り当ての制限に直面しているようです。それは、OPNET、Windows、私のラップトップメモリ、またはおそらくC言語に関係している可能性があります。この問題は、要素の総数が数千の整数になるネストされた配列を使用しようとすると発生します。全体的なメモリ割り当ての制限を超えていると思います。この上限を増やす方法があるかどうか疑問に思っています。正確な問題の説明は次のとおりです。
私は基本的にルーティングテーブルを持っています。これをrouting_tbl[n]と呼びましょう。これは、30ノード(ルーター)をサポートしていることを意味します。ここで、このテーブルの各ノードについて、情報を保持します。path [p]と呼ばれる配列内の、約数百(数百)の使用可能なパス。繰り返しますが、この配列の各パスについて、それに属するノードのリストをhops[h]という配列に保持します。したがって、少なくともnph整数に相当するメモリを使用していますが、このテーブルには他の情報も含まれています。同じ関数で、ほぼ40,000個の整数を消費する別のネストされた配列も使用しています。シミュレーションを実行するとすぐに、スタックオーバーフローについての文句を言うのをやめます。ルーティングテーブルの合計サイズを小さくすると機能します。何が問題を引き起こしていると思いますか、そしてそれをどのように解決することができますか?アリに感謝します
c - pthread_detach は私のメモリを管理してくれますか?
次のコードがあるとします。
デタッチされたスレッドは、malloc によって割り当てられたメモリを解放しますか、それとも今やらなければならないことですか?
c++ - C/C++ 用のマルチスレッド メモリ アロケータ
私は現在、マルチスレッド サーバー アプリケーションを大量に使用しており、優れたマルチスレッド メモリ アロケータを探しています。
これまでのところ、私は間で引き裂かれています:
- サンズ ウメン
- Google の tcmalloc
- Intel のスレッド ビルディング ブロック アロケータ
- エメリー・バーガーの財宝
私が見つけたものからは、hoard が最速かもしれませんが、今日まで聞いたことがなかったので、本当に見た目と同じくらい良いかどうかは懐疑的です. これらのアロケーターを試してみた経験のある人はいますか?
c - 組み込みシステムに適した C メモリ アロケータは何ですか?
多数の小さなブロック (32-64b) を割り当てて割り当てを解除する、単一のスレッド化された組み込みアプリケーションがあります。キャッシュベースのアロケーターの完璧なシナリオ。そして、私はそれを書くことを試みることができましたが、おそらく時間の無駄であり、すでに最前線にあるいくつかのソリューションほど十分にテストおよび調整されていません.
では、このシナリオで使用できる最良のアロケーターは何でしょうか?
注: システムで Lua 仮想マシン (割り当ての 80% 以上の原因) を使用しているため、スタック割り当てを使用して割り当てのパフォーマンスを向上させるようにコードを簡単にリファクタリングすることはできません。