問題タブ [stack-memory]
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 - gdb を使用してスタック/ヒープを探索する方法は?
誰かが私に簡単な概要を教えてください/Cプログラムのスタック(およびヒープ?)を検査する方法のドキュメントを教えてください。これは GDB で行うべきだと思いましたが、他にもっと簡単な代替手段があれば、それも問題ないはずです。
ありがとう。
.net - MicrosoftのCLRの非同期メソッド呼び出し用にref値型パラメーターはどこに保存されますか?
これが実装の詳細であることを理解しています。私は実際、その実装の詳細がMicrosoftのCLRにどのように含まれているかに興味があります。
さて、私は大学でCSを勉強していなかったので、私は我慢してください。それで、私はいくつかの基本的な原則を逃したかもしれません。
しかし、現在のCLRに実装されている「スタック」と「ヒープ」についての私の理解は確かだと思います。たとえば、「値型はスタックに格納されます」などの不正確な包括的ステートメントを作成するつもりはありません。ただし、最も一般的なシナリオ(パラメーターとして渡されるか、メソッド内で宣言され、クロージャー内に含まれない値型のプレーンなバニラローカル変数)では、値型変数はスタックに格納されます(ここでもMicrosoftのCLRに格納されます)。
私が確信していないのは、ref
値型パラメーターがどこから来るのかということだと思います。
もともと私が考えていたのは、コールスタックが次のようになっている場合(左=下):
...その後、 Aのスコープ内で宣言され、ref
パラメーターとしてBに渡されたローカル変数は、引き続きスタックに格納できますか?Bは、そのローカル変数がAのフレーム内に格納されたメモリ位置を必要とするだけです(それが正しい用語でない場合はご容赦ください。とにかく、私が何を意味するかは明らかだと思います)。
しかし、私がこれを行うことができると思ったとき、これは厳密には真実ではないことに気づきました。
したがって、上記の例では、x
(Aのスコープ内で)どこに保存されていますか?そして、これはどのように機能しますか?箱入りですか?そうでない場合、値型であるにもかかわらず、ガベージコレクションの対象になりますか?または、メモリをすぐに回収できますか?
長い質問をお詫び申し上げます。しかし、答えが非常に単純であっても、これは、将来同じことを考えている他の人にとって有益なものになるかもしれません。
c# - クラスのメモリ管理
次のコードでは、メモリ管理の観点からclass A
、.NET (C#) での割り当てと割り当て解除の方法を示しています。
注: の使用はclass B
、プログラムのエントリ ポイントまたはオブジェクト インスタンスのいずれかである可能性がありますが、ここでのスコープは、メモリ管理と のインスタンスの割り当てですclass A
。
c++ - スタック割り当てとヒープ割り当て
重複の可能性:
C++ どちらが速いか: スタック割り当てまたはヒープ割り当て
TEST を定義して、または定義せずに、次のコードをテストしていました。
以下は私の時間出力です:
最初のケースが2番目のケースよりもはるかに遅い理由を知りたいですか? また、コンパイラの最適化が最初のケースに影響しないのはなぜですか?
スタック割り当てとヒープ割り当てが原因であることはわかっていますが、可能であれば、より深く理解したいと思います。
c# - メモリ割り当て:スタックとヒープ?
スタックとヒープの間のメモリ割り当ての基本と混同しています。標準の定義(誰もが言うこと)に従って、すべての値型はスタックに割り当てられ、参照型はヒープに入れられます。
次の例を考えてみましょう。
さて、メモリ割り当てはc#でどのように行われますか?MyClass
(つまり)のオブジェクトはm
完全にヒープに割り当てられますか?つまり、int myInt
両方string myString
ともヒープになりますか?
または、オブジェクトは2つの部分に分割され、スタックとヒープの両方のメモリ位置に割り当てられますか?
objective-c - iPhoneのメモリ管理におけるスタックとヒープの問題
* Objective-Cのすべてのオブジェクトがスタックではなくヒープに割り当てられるのはなぜですか?
Objective-CとC++の両方でプログラミングする場合はどうでしょうか。
c++ - ヒープ上の配列の初期化
ヒープ上の配列の値を手動で開始するにはどうすればよいですか? 配列が (スタック内の) ローカル変数である場合、次のように非常にエレガントで簡単な方法で実行できます。
残念ながら、次のコード
コンパイルでエラーを出力する
このようなサイクル、またはそれほどエレガントではない方法を使用する必要がありますか?
assembly - x86アセンブリのレジスタで使用されるプッシュ/ポップ命令の機能は何ですか?
アセンブラについて読んでいると、プロセッサの特定のレジスタをプッシュし、後で再度ポップして以前の状態に戻すと書いている人によく出くわします。
- どうすればレジスターをプッシュできますか? それはどこに押し付けられていますか?なぜこれが必要なのですか?
- これは単一のプロセッサ命令に要約されますか、それともより複雑ですか?
python - Pythonインタープリターの内部(スタックとヒープ)
どのデータがスタックに送られ、どのデータがヒープに送られますか?
c++ - 参照型のC++メモリ管理
私はまだかなり初心者のプログラマーであり、参照タイプを使用したc++メモリ管理について質問があります。
まず第一に、参照型についての私の理解:
ポインターがスタックに置かれ、ポインターが指す実際のデータが作成され、ヒープに配置されます。標準配列とユーザー定義クラスは参照型です。これは正しいです?次に、私の主な質問は、cおよびc ++のメモリ管理メカニズム(malloc、freeおよびnew、delete)が常にこれを適切に処理し、クラスまたは配列が指しているメモリを解放するかどうかです。それらのポインターがヒープ上の同じサイズ/タイプの他のオブジェクトに何らかの方法で再割り当てされた場合でも、すべてが機能しますか?クラスに別のオブジェクトを指すポインタメンバーがある場合はどうなりますか?クラスオブジェクトを削除/解放しても、そのメンバーポインタが指しているものは解放されないと思いますが、それは正しいですか?
皆さんありがとう!
-R