問題タブ [dynamic-memory-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++ - Char * C++ での再割り当て
max_size() を超えたときに std::string がメモリ不足になるのを避けたいため、C++ の「char *」に一定量のデータを格納する必要があります。しかし、データはネットワークからのデータ ブロックで受信されるため、データ ブロックを取得するたびに再割り当てを使用する必要があります。C++ での char * 再割り当てと連結のためのエレガントなソリューションはありますか?
linux - Linuxでアセンブリおよびシステムコールを使用してメモリを動的に割り当てる方法
Linuxでアセンブリ言語を使用し、mallocや友人ではなく、システムコールを使用した、動的メモリ割り当ての優れたコード例を探しています。
これを行うための最も簡単で効果的な方法のいくつかは何ですか?
Intel386以降のコンピュータ。
c - Simple dynamic memory allocation bug
I'm sure you (pros) can identify the bug's' in my code, I also would appreciate any other comments on my code.
BTW, the code crashes after I run it.
Thanks in advance.
c++ - C++オブジェクトのコンストラクタ
私は次のようにクラスPersonを持っています:
次に、2つのコンストラクターを追加する必要があります。引数を取らないもので、動的に割り当てられたリソースにフィールド値を挿入します。初期化リストによって初期化された2番目の(char *、int)引数を取ります。最後の部分は、オブジェクトの破棄と動的に割り当てられたリソースの割り当て解除に関する情報を表示するデストラクタを定義することです。このタスクを実行する方法は?
それは私がすでに持っているものです:
c - 別の動的メモリ割り当てのバグ
多次元配列 (8 行、3 列) にメモリを割り当てようとしています。
割り当てのコードは次のとおりです(エラーは明らかです)
これを参照すると、クラッシュが発生します。
xxxx.exe の 0x0135144d で未処理の例外: 0xC0000005: アクセス違反書き込み場所 0xabababab。
この種のテーマについて、推奨される参考文献や読み物はありますか?
ありがとう。
c++ - スモール オブジェクト アロケーター
大きなプロジェクトで Andrei Alexandrescu による Modern C++ Design の SmallObjectAllocator を使用した人はいますか? このアロケーターを実装したいのですが、プロジェクトで使用する前に、いくつかの意見が必要です。いくつかのテストを行ったところ、非常に高速に見えますが、テストは小規模なテスト環境で行われました。小さなオブジェクト (イベント、スマート ポインターなど) がたくさんある場合の速度と、それが使用する余分なメモリの量を知りたいです。
c - 動的メモリ割り当て教材?
ウィキペディアの ref セクションに表示される (やや古い) 論文以外に、C での動的メモリ割り当ての落とし穴、手法、優れた実践などについて包括的に説明している、あなたが知っている優れた (教育) 資料はありますか? ありがとう。
windows - Windows のメモリ割り当てに関する質問
malloc()
現在、Windows での実装を検討しています。しかし、私の研究では、私を困惑させるものに出くわしました。
まず、API レベルでは、Windows は主にHeapAlloc()
とのVirtualAlloc()
呼び出しを使用してメモリを割り当てることを知っています。ここから、Microsoft の実装malloc()
(CRT に含まれているもの - C ランタイム) は、基本的にHeapAlloc()
480 バイトを超えるブロックを呼び出しVirtualAlloc()
、断片化を防ぐために、小さな割り当て用に割り当てられた特別な領域を管理することを収集します。
まあ、それはすべて良いことです。しかし、Microsoft の .NET よりも最大 125% 高速であると主張するmalloc()
nedmallocなどmalloc
、 .
これはすべて、いくつかのことを疑問に思います。
HeapAlloc()
小さなブロックだけを呼び出すことができないのはなぜですか? フラグメンテーションに関してパフォーマンスが低下していますか (たとえば、「ベスト フィット」ではなく「ファースト フィット」を実行するなど)?- 実際、さまざまな API 割り当て呼び出しの内部で何が起こっているかを知る方法はありますか? それはかなり役に立ちます。
nedmalloc
Microsoft よりもはるかに高速な理由は何malloc
ですか?HeapAlloc()
上記のことから、 /は非常に遅いので、たまに呼び出して、割り当てられたメモリ自体を管理するVirtualAlloc()
方がはるかに高速であるという印象を受けました。malloc()
その仮定は本当ですか?それともmalloc()
、断片化のために「ラッパー」が必要なだけですか? このようなシステム コールは高速であると考える人もいるでしょう。少なくとも、システム コールを効率的にするために何らかの工夫が必要であると考える人もいるでしょう。- 本当なら、なぜそうなのですか?
malloc
平均して、典型的な呼び出し (おそらく、すでに割り当てられているセグメントの数の関数)によって実行されるメモリの読み取り/書き込みの数 (桁違い) は? 私は直観的に、平均的なプログラムでは数十だと思いますが、そうですか?
qt - QListが大きくなりすぎると、アプリがクラッシュします
計算性能を向上させるために、メモリに大量のデータを格納する必要のあるアプリケーションを作成しています。
これは、リストとオブジェクトの階層であり、最上位のオブジェクトはです。データをロードすると、のインスタンスが多数作成され、リストに追加されます。メモリ消費量が増加し、約1.9Gbになるとプログラムがクラッシュします。私のコンピューター(Vista)には4Gb RAMがあり、RAM(XP)が少ない他のコンピューターでテストしたところ、同じ時点でクラッシュしました。1.9Gbを超えるRAMを使用することはできませんか?QList<myObject*>
new myObject*
小さいファイルが読み込まれ、「Windowsタスクマネージャー」によるメモリ使用量が(たとえば)1.2Gbの場合、データを処理できます。しかし、別のファイルをロードしたい場合は、delete
すべてのオブジェクトを呼び出してリストをクリアした後でも、1.2Gbから成長が始まります。なんで?
に切り替えてQVector
呼び出してみましsqueeze()
たが、メモリは同じままです。QListsでの動的メモリ割り当てに関する他のスレッドをここで読みましたが、新しいファイルをロードする前にメモリをリセットする方法は本当にありませんか?特に1.9Gb後にクラッシュするため。3つの小さなファイルを順番にロードして、そこにいます。
提案をありがとうございました。
memory-management - Windowsで最小の空き仮想メモリアドレスを取得する
タイトルはほとんどすべてを示しています:ウィンドウの下で最小の空き仮想メモリアドレスを取得する方法はありますか?プログラムの開始時(動的メモリ割り当てが行われる前)に、この情報に関心があることを付け加えておきます。
malloc
なぜそれが必要なのか: Windowsで実装を構築しようとしています。それが不可能な場合はVirtualAlloc()
、最初のパラメーターとしてNULLを指定したときに返されるものをすべて実行する必要があります。利用可能なものの一番下にある割り当てメモリのように、それが賢明なことをすることを期待するでしょうが、保証はありません。