問題タブ [stack]
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++ - USE_HEAPまたはUSE_STACKへのC/C++パターン
オブジェクトをスタックまたはヒープにきれいに割り当てることができるマクロ(または同様のもの)を定義する方法はありますか?
例えば。現在のコード:
最も簡単な提案は次のとおりですが、以下に示すように、2セットのコードを維持することはあまりクリーンではありません。
お客様のニーズに応じて、どちらの方法でもコードをコンパイルできるデザインパターン/プロキシクラスを探しています。
編集:コードは、組み込みデバイス/(組み込み)Linux /WindowsMobile用のライブラリを構築するために使用されます。ほとんどのお客様は、スタックベースの割り当てのみを望んでいます。他の数人は、スタックをヒープと交換するように依頼しました。
ありがとう、チャールズ
java - Java でのエスケープ解析
私の知る限り、JVM はロックの粗大化やロック省略などのパフォーマンスの最適化にエスケープ分析を使用します。エスケープ分析を使用して特定のオブジェクトをスタックに割り当てることができると JVM が判断できる可能性があるかどうかに興味があります。
いくつかのリソースは、私が正しいと思わせるものです。実際にそれを行うJVMはありますか?
oracle - どのパッケージからプロシージャが呼び出されたかを知ることは可能ですか?
AとBの2つのパッケージがあるとします。
パッケージAでは、パッケージBのプロシージャを呼び出します。
パッケージBの手順で、手順がパッケージAから呼び出されたことを知ることはできますか?
これらの情報をありがとうございました。とても参考になりました。
感謝します。
c++ - スレッドセーフな C++ スタック
私はC ++を初めて使用し、さまざまなライターがオブジェクトをスタックにプッシュし、リーダーがスタックからそれらをプルする(または少なくともオブジェクトへのポインターをプッシュする)マルチスレッドアプリを作成しています..
ロックコードなどを追加せずにこれを処理できる C++ に組み込まれた構造はありますか? そうでない場合、Boost ライブラリはどうですか?
編集:
やあ。最初の素晴らしい回答をありがとう。これが組み込み可能だと思った理由の 1 つは、私が純粋に x86 空間で考えていて、ポインターの PUSH/POP は命令レベルでのアトミック アクションであるべきだと考えていたからだと思います。
私の最初の予感が正しいかどうかはわかりませんが、これはすべてのプラットフォームで必ずしも正しいとは限りません。ただし、x86 で実行している場合、アトミック PUSH と POP をスタックに取得しますか?もしそうなら、これは本質的にロックフリーになりますか?
recursion - 再帰は一般に、スタックを使用する場合と比較して、時代遅れのトラバース方法と見なされますか?
私は、人々が再帰の代わりにスタックを使用することを選択しているいくつかの場所で読んでいます。これは、再帰が仕事を成し遂げるための時代遅れの方法であると見なされているためですか、それとも両方の方法が異なるコンテキストで等しく適用可能であるためですか?
c++ - ランタイム スタックはメモリのデータ セグメントに保持されますか?
バックグラウンドで何が起こっているかを実験した後、スタックメモリの構成に非常に興味があり、本から得た小さな知識と明らかに一致していることがわかりました。私が理解していることが正しいかどうかを確認したかっただけです。
私は基本的なプログラムを持っています - 2 つの関数があります。最初の 1 つは foo で、もう 1 つは main (エントリ ポイント) です。
プログラムの出力を以下に示します。main のローカル変数 i はまったく関係のない位置にあります。integer は値型ですが、main に対してローカルな char * ポインターで再度チェックし、同様の結果を取得します。
私は主に、コードと変数がメモリの異なるセグメント (コード セグメント/データ セグメント) に割り当てられていることを理解しています。基本的に、コール スタックは関数の実行に関する基本的な情報 (ローカル変数、パラメーター、ポイントを返す) を折りたたみ、それらをデータ セグメントに保持すると言うのは正しいでしょうか?
c++ - C でスタック データを返します。正しく割り当て解除されますか?
私は友人のコードをレビューしていて、C/C++ がスタックにメモリを割り当て、そのリリースを管理する方法について興味深い議論に巻き込まれました。関数で 10 個のオブジェクトの配列を作成し、その配列を返す場合、関数がポップしたときにそれを解放しますか (したがって、指定されたデータが無効になります)、それともヒープに配置されますか (これは、どのように行うかという問題を引き起こします)。それを解放?)。
サンプルコードは次のとおりです。
どんな助けでも大歓迎です、これは私の友人と私が答えることができない非常に興味深い質問に変わりつつあります.
java - LIFO で制限されたアイテムのスタックを保持するデータ構造はどれですか?
基本的に境界のあるスタックであるデータ構造を探しています。
スタックが最大 3 つのアイテムを保持できると宣言し、別のアイテムをプッシュすると、最も古いアイテムがポップされます。