問題タブ [virtualalloc]
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.
windows - VirtualAlloc で lpAddress が null の場合、オペレーティング システムはどの領域を割り当てるかをどのように決定しますか?
関数呼び出しのlpAddress
パラメーターVirtualAlloc
が null の場合、OS はどの仮想アドレス空間領域を割り当てるかをどのように決定しますか?
windows - VirtualAlloc で割り当てられた領域のアドレスを決定しますか?
このVirtualAllocによれば、アドレスパラメータの値をnullにすることができ、「システムが領域を割り当てる場所を決定します」。
問題は、割り当てられたアドレスを知る方法はありますか? はいの場合、どのように?
c# - C# でプロセス メモリに書き込む
オフセットをプロセス メモリのアドレスに書き込みたいのですが、メモリを割り当てることも、メモリ アドレス タイプを「書き込み可能」に変更することもできません。そのため、プロセス メモリにオフセットや値を書き込むことはできません。よくわかりませんが、プロセスメモリは読み取り可能だと思います! この問題を解決するために私を助けてください。
これは私が試したものです:
windows - _MEMORY_BASIC_INFORMATION 構造の BaseAddress と AllocationBase および AllocationProtect と Protect の違いは何ですか?
_MEMORY_BASIC_INFORMATION
アドレス空間を記述するフィールドが含まれています。BaseAddress
と Aの違いを知りたいですllocationBase
。 BaseAddress
は地域のベースアドレスで、? とは何AllocationBase
ですか?
AllocationProtect
また、との違いも知りたいですProtect
。少しはわかりますAllocationProtect
が、 はリージョンを予約するときの保護属性、 はパラメータProtect
で呼び出すときの保護属性だと思います。もしそうなら、リージョンを予約するときのフィールドは何ですか?VirtualAlloc
MEM_COMMIT
Protect
c++ - malloc はどのように 4KB 未満のメモリを割り当てますか?
malloc が VirtualAlloc() 関数を呼び出してメモリを割り当てる場合 (最小 4Kb を割り当てます)、malloc はどのように int に 4 バイトを割り当てますか?
c# - c# で VirtualAlloc を使用して大きなメモリを割り当てる
ベンダーの c# サンプル コードを PCI-Express デバイスとのインターフェイスに適応させようとしています。このコードは基本的に、大きなバッファーを int 配列として割り当て、fixed キーワードを介してピン留めしてから、ハードウェアに渡してデータを入力します。
これはうまく機能しますが、.Net は配列内の要素が最大 20 億に制限されているため、最終的には失敗します。Long の配列と gcAllowVeryLargeObjects キーワードを使用して制限を 16 GB に押し上げることができますが、最終的にはまだ .Net 制限に遭遇します。
アンマネージ コードでは、VirtualAlloc を呼び出して 40 GB または 50 GB を直接要求できますが、これが c# で可能かどうかは明確ではなく、適切なサンプル コードを見つけることができませんでした。別の言語でこれを行うことができることはわかっていますが、少なくとも Windows では .Net に精通しており、プログラムのこの比較的小さな部分を除けば、ハードウェア固有のコードはほとんどないので、私が持っているものに固執しようとします。
c++ - VirtualAlloc の順序が重要なようです (c++)
virtualalloc を使用すると、奇妙な動作が発生します。私はC ++、Visual Studio 2010を使用しています。
割り当てたいものが2つあり、VirtualAllocを使用しています(質問とは関係なく、理由があります)
1 - x86 アセンブリ コードのバッファを保持するため
のスペース 2 - x86 コードが必要とするデータ構造を保持するためのスペース
私のコードでは、次のことを行っています。
DEBUG モード:
RELEASE モードで正常に動作: スピンアップしたスレッドは、入力データとして null を受け取ります。createThread を呼び出したときにポインターが正しいことをデバッグで確認しました
VirtualAlloc を切り替えて、データ領域の前に関数領域を割り当てると、DEBUG モードと RELEASE モードの両方が正常に機能します。
理由はありますか?すべての VS ビルド設定が DEBUG/RELEASE 間で同じであることを確認しました