問題タブ [allocation]
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 - malloc()/free() のアラインメント制限
以前の K&R (第 2 版) および私が読んだ他の C 言語のテキストでは、動的メモリ アロケータの実装について次のように説明されていmalloc()
ますfree()
。どうやら、特定のコンピューター ハードウェア アーキテクチャ (CPU、レジスタ、およびメモリ アクセス) によって、特定の値の型を格納およびアドレス指定する方法が制限されているようです。たとえば、4long
の倍数のアドレスから始まる 4 バイト ( ) の整数を格納する必要がある場合があります。
メジャー プラットフォーム (Intel & AMD、SPARC、Alpha) がメモリ割り当てとメモリ アクセスに課す制限はありますか? または、特定のアドレス境界でのメモリ割り当ての調整を安全に無視できますか?
c# - 割り当て/割り当て解除を追跡することは可能ですか?
私の知る限り、これは不可能なので、左翼の文書化されていない割り当てフック関数を本当に望んでいます。_CrtSetAllocHook
の
ように割り当てを追跡する方法が必要ですが、。ガベージコレクター/割り当てに対する唯一の可視性は、 GC.CollectionCount
であるように見えます。
他に.NETメモリモジョを持っている人はいますか?C#/.NET
c++ - VC++の初期化されていないメモリブロック
誰もが知っているように、Visual C ++ランタイムは、初期化されていない、または解放されたばかりのメモリブロックを特別な非ゼロマーカーでマークします。初期化されていないすべてのメモリを手動でゼロに設定せずに、この動作を完全に無効にする方法はありますか?それは私の有効なnullではないチェックで大混乱を引き起こしています0xFEEEFEEE != 0
。
うーん、多分私はもう少しよく説明する必要があります。私は(newを介して)変数を作成して初期化しますが、それはすべてうまくいきます。(削除を介して)解放すると、ポインターが。0xFEEEFEEE
の代わりにに設定されますNULL
。の適切なチェックを挿入するとNULL
、独自のメモリを管理するすべての優れたプログラムがそうであるように、問題なくチェックに0xFEEEFEEE
合格すると問題が発生します。NULL
削除するときにすべてのポインタを手動で設定する以外NULL
に、メモリがすでに解放されたことを検出するための良い方法はありますか?Boostを使用するのはそれだけなので、Boostを使用したくないのは、オーバーヘッドが必要ないという理由だけです。
c++ - C/C++ 用のマルチスレッド メモリ アロケータ
私は現在、マルチスレッド サーバー アプリケーションを大量に使用しており、優れたマルチスレッド メモリ アロケータを探しています。
これまでのところ、私は間で引き裂かれています:
- サンズ ウメン
- Google の tcmalloc
- Intel のスレッド ビルディング ブロック アロケータ
- エメリー・バーガーの財宝
私が見つけたものからは、hoard が最速かもしれませんが、今日まで聞いたことがなかったので、本当に見た目と同じくらい良いかどうかは懐疑的です. これらのアロケーターを試してみた経験のある人はいますか?
c - 組み込みシステムに適した C メモリ アロケータは何ですか?
多数の小さなブロック (32-64b) を割り当てて割り当てを解除する、単一のスレッド化された組み込みアプリケーションがあります。キャッシュベースのアロケーターの完璧なシナリオ。そして、私はそれを書くことを試みることができましたが、おそらく時間の無駄であり、すでに最前線にあるいくつかのソリューションほど十分にテストおよび調整されていません.
では、このシナリオで使用できる最良のアロケーターは何でしょうか?
注: システムで Lua 仮想マシン (割り当ての 80% 以上の原因) を使用しているため、スタック割り当てを使用して割り当てのパフォーマンスを向上させるようにコードを簡単にリファクタリングすることはできません。
compilation - 16KB または 32KB の NTFS 割り当てブロックは、デフォルトの 4KB と比較してコンパイル時間を短縮しますか?
16KB または 32KB の NTFS 割り当てブロックは、デフォルトの 4KB と比較してコンパイル時間を短縮しますか?
c++ - 簡単な効率の質問C ++(メモリ割り当て)..そして衝突検出が役立つかもしれませんか?
私は C++ (多方向 2D スペース シューティング ゲーム) で小さなアーケードのようなゲームを書いており、衝突検出部分を仕上げています。
これが私がそれをどのように整理したかです(私はそれを作ったので、それはくだらないシステムかもしれません):
すべての船は円形のコンポーネントで構成されています。各船のコンポーネントの量は任意です (コンポーネントが多いほど、CPU サイクルが多くなります)。船の作成時に計算する maxComponent 距離があります。これは基本的に、船の中心から最も遠いコンポーネントの端まで描画できる最長の線です。画面上の要素を追跡し、この maxComponentDistance を使用して、衝突するほど接近しているかどうかを確認します。
それらが近接している場合は、異なる船のコンポーネントが交差しているかどうかを確認し始めます。ここで、私の効率性の問題が出てきます。
船の中心に対するコンポーネントの (x,y) 位置がありますが、船が現在どのように回転しているかは考慮されていません。船が移動するたびにコンポーネントを再計算する必要がないため、それらを相対的に保ちます。そのため、回転計算のための小さな式があり、船の中心に対する回転を考慮した位置に対応する 2 次元ベクトルを返します。
衝突検出は GameEngine にあり、2d ベクトルを使用します。私の質問は、戻り値の型についてです。関数が呼び出されるたびに 2d-vector オブジェクトを作成して返す必要がありますか、それとも、そのコンポーネント オブジェクトに追加のプライベート 2d-vector 変数を与え、関数が呼び出されたときにプライベート変数を編集し、そのオブジェクトへのポインターを返す必要がありますか?
メモリ割り当ての効率と、永続的で編集可能なプライベート変数を持つことの効率についてはわかりません。プライベート変数にもメモリを割り当てる必要があることはわかっていますが、衝突をチェックするたびにではなく、新しいコンポーネントが作成されたときだけです。コンポーネントは船が破壊されると削除されるため、私の環境では一定ではありません。
それが私の主なジレンマです。また、実際の衝突検出システムの設計に関する指針もいただければ幸いです。ハックするのは初めてです(少し読んでおくべきだったかもしれません)
前もって感謝します。
c++ - ヒープ上の C++ 多次元配列
多次元配列を動的に割り当てるにはどうすればよいですか?
c - Cで配列の配列を動的に割り当てる
配列の配列を動的に割り当てるなど、C のいくつかの基本的なことを本当に理解していません。私はあなたができることを知っています:
2 次元配列を宣言するためです (その後、*alloc 関数を使用して割り当てられます)。また、実行することで「簡単に」アクセスできます*(*(m + line) + column)
。しかし、その配列から要素に値を割り当てるにはどうすればよいでしょうか? gcc を使用すると、次のステートメントm[line][column] = 12;
はセグメンテーション違反で失敗します。
任意の記事/ドキュメントをいただければ幸いです。:-)