問題タブ [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.

0 投票する
7 に答える
14650 参照

c - C で FIFO キューを作成する

2 つのスタックを使用せずに C で FIFO 'スタック' を作成することは可能ですか?

ありがとう!

(前の方に回答してくださった方すみません。LIFOとFIFOの意味で考えていました。)

0 投票する
2 に答える
1793 参照

c# - C# でジェネリック スタックを実装するにはどうすればよいですか?

Visual C# を使用して、Stack を使用して RPN 電卓をプログラムしています。問題は、これを行う方法がわからないことです。System.Collections.Generic を使用していますが、

次のエラーが発生します。

ジェネリック型 'System.Collections.Generic.Stack' を使用するには、'1' 型引数が必要です

私はここでかなり無知です。助けてくれてありがとう。

0 投票する
2 に答える
9209 参照

debugging - .NET CLR アプリケーションをデバッグするときに、評価スタックのローカル変数を表示するにはどうすればよいですか?

Windbg (sos エクステンション付き) を使用しており、クラッシュしたアプリケーションをデバッグしようとしています。例外をスローした呼び出しの IL をダンプすることができ、コードを調べると、評価スタックの内容をダンプできれば必要な情報を取得できたようです。WinDbg & sos で何ができますか?

これが私がしたことです:

  1. WinDbgを開始しました
  2. クラッシュしたプロセスに接続
  3. loadby sos mscorwks (sos 拡張機能をロードするため)
  4. !token2ee theModuleName 0600009a (ここで、theModuleNameはデバッグ中のアプリ (およびアセンブリ) の名前で、9aは Windows エラー報告ツールによって報告されたクラッシュしたメソッドのメソッド オフセットです。次の出力が得られました。

    モジュール: 000e2c3c (theApplicationName.exe)
    トークン: 0x0600009a
    MethodDesc: 000e67c8
    名前: MyNamespace.MyClassName.theCulpritFn(MyOtherClass)
    JITTED コード アドレス: 0081b1d0

  5. !dumpil 00e67c8 (問題のメソッドの IL をダンプした) . これは出力です:

    問題は、例外がスローされる前に何がスタックにプッシュされたかを確認する方法があるかどうかです。私が間違っていなければ、例外コンストラクターに渡される引数は、評価スタックのインデックス 0 にあるローカル変数でなければなりません。

    PS !clrstack -aを呼び出そうとすると、次のメッセージが表示されました。現在のスレッドはマネージド スレッドではない可能性があります。!threads を実行して、プロセス内のマネージド スレッドの一覧を取得できます。

ありがとう!

0 投票する
2 に答える
1421 参照

c - スタックを複製するとはどういう意味ですか?

私はC プログラミング言語を読んでいて、スタックを使用して逆ポーランド語電卓を作成する方法を学びました。これに続く演習の 1 つを次に示します。

演習 4-4. ポップせずにスタックの一番上の要素を出力し、それを複製し、一番上の 2 つの要素を交換するコマンドを追加します。スタックをクリアするコマンドを追加します。

「重複」とはどういう意味ですか? スタック全体を出力する、またはスタック全体を自分自身にプッシュする (たとえば、「1 2 3」が「1 2 3 1 2 3」になるように) という意味ですか?

0 投票する
5 に答える
35122 参照

c++ - std::stack はイテレータを公開しますか?

C++ STL の は、基になるコンテナーのイテレーターを公開していますか、std::stackそれともそのコンテナーを直接使用する必要がありますか?

0 投票する
3 に答える
911 参照

variables - スタック上の変数はどのようにアクセスされますか?

次のローカル変数があるとします。

私の知る限り、これらは次のようにシステムスタックに割り当てられます。

これは、aの値を取得するために、d、c、およびbの値を最初にスタックからポップアウトする必要があることを意味しますか?もしそうなら、これらの値はどこに行きますか?これは、最近宣言された変数へのアクセスが高速になることを意味しますか?それとも私は何かが足りないのでしょうか(私はそうだと思います)、そしてすべてが他の方法で機能しますか?

編集:ありがとう、みんな!

0 投票する
6 に答える
724 参照

c# - 構造体がスタックに存在しないのはいつですか?

私はJonSkeetの書評を読んでいて、彼はHead First C#の多くの不正確さを調べています。

それらの1つが私の目を引きました:

[エラーセクションの下]構造体は常にスタック上に存在すると主張します。

どのような状況で構造体はスタックに存在しませんか?これは、私が構造体について知っていると思っていたものとは逆になります。

0 投票する
7 に答える
2657 参照

python - プログラムで Python スタック フレームを構築し、コード内の任意のポイントで実行を開始することは可能ですか?

CPython でスタック (1 つまたは複数のスタック フレーム) をプログラムで構築し、任意のコード ポイントで実行を開始することは可能ですか? 次のシナリオを想像してください。

  1. ワークフロー エンジンへの呼び出しであるいくつかの構造 (分岐、待機/結合など) を使用して Python でワークフローをスクリプト化できるワークフロー エンジンがあります。

  2. wait や join などのブロッキング呼び出しは、ある種の永続的なバッキング ストアを使用して、イベント ディスパッチ エンジンでリスナー条件を設定します。

  3. エンジンで待機条件を呼び出し、後で通知される条件を待機するワークフロー スクリプトがあります。これにより、イベント ディスパッチ エンジンにリスナーが設定されます。

  4. ワークフロー スクリプトの状態、関連するスタック フレーム (プログラム カウンター (または同等の状態) を含む) は、数日後または数か月後に待機状態が発生する可能性があるため、保持されます。

  5. その間に、ワークフロー エンジンが停止され、再起動される可能性があります。つまり、ワークフロー スクリプトのコンテキストをプログラムで保存および再構築できる必要があります。

  6. イベント ディスパッチ エンジンは、待機条件がピックアップするイベントを発生させます。

  7. ワークフロー エンジンは、シリアル化された状態とスタックを読み取り、スタックを使用してスレッドを再構築します。次に、待機サービスが呼び出された時点で実行を継続します。

質問

これは、変更されていない Python インタープリターで実行できますか? さらに良いことに、この種のことをカバーする可能性のあるドキュメント、またはプログラムでスタック フレームを構築し、コード ブロックの途中で実行を開始するコードの例を誰かに教えてもらえますか?

編集:「変更されていない python インタープリター」を明確にするために、C API を使用してもかまいません (これを行うには PyThreadState に十分な情報がありますか?) が、Python インタープリターの内部を調べて、変更されたものを構築します。

更新:最初の調査から、実行コンテキストを取得できますPyThreadState_Get()。これは、のスタック フレームへの参照を持つPyThreadState(で定義された)のスレッド状態を返します。スタック フレームは、 で定義されている にtypedef された構造体に保持されます。 コードブロックの先頭からのオフセットとして表されるプログラムカウンターを持つフィールド(bobinceへの小道具)があります。pystate.hframePyFrameObjectframeobject.hPyFrameObjectf_lasti

これは、実際にコンパイルされたコード ブロックを保持している限り、必要な数のスタック フレームのローカルを再構築し、コードを再起動できることを意味するため、一種の朗報です。これは、変更された python インターペレタを作成しなくても理論的には可能であることを意味すると思いますが、コードはおそらく、インタープリタの特定のバージョンに厄介で緊密に結合される可能性があることを意味します。

残る問題は次の3つです。

  • トランザクション状態と 'saga' ロールバック。これは、O/R マッパーを構築するために使用するメタクラス ハッキングのようなものによっておそらく達成できます。私は一度プロトタイプを作成したので、これがどのように達成されるかについてかなりのアイデアを持っています.

  • トランザクション状態と任意のローカルを堅牢にシリアル化します。これは、読み取り__locals__(スタック フレームから利用可能) と、pickle への呼び出しをプログラムで作成することによって実現できます。ただし、ここに何があるのか​​ わかりません。

  • ワークフローのバージョン管理とアップグレード。システムはワークフロー ノードのシンボリック アンカーを提供していないため、これはやや複雑です。これを行うには、すべてのエントリ ポイントのオフセットを特定し、それらを新しいバージョンにマップする必要があります。おそらく手動で行うことは可能ですが、自動化するのは難しいと思います。この機能をサポートしたい場合、これがおそらく最大の障害になります。

更新 2: PyCodeObject ( code.h) には addr ( f_lasti)-> 行番号マッピングのリストがありPyCodeObject.co_lnotabます (ここで間違っている場合は訂正してください)。これは、ワークフローを新しいバージョンに更新するための移行プロセスを容易にするために使用される場合があります。これは、凍結された命令ポインターを新しいスクリプトの適切な場所にマップし、行番号に関して行うことができるためです。まだかなり面倒ですが、もう少し有望です。

更新 3:これに対する答えはStackless Python かもしれません。 タスクを一時停止してシリアル化できます。これがスタックでも機能するかどうかはわかりません。

0 投票する
17 に答える
141566 参照

assembly - スタックはアセンブリ言語でどのように機能しますか?

私は現在、スタックがどのように機能するかを理解しようとしているので、アセンブリ言語を独学することにしました。この本を使用しています:

http://savannah.nongnu.org/projects/pgubook/

私はGasを使用しており、 Linux Mintで開発を行っています。

私は何かに少し混乱しています:

私の知る限り、スタックは単なるデータ構造です。したがって、アセンブリでコーディングしている場合は、自分でスタックを実装する必要があると思いました。ただし、次のようなコマンドがあるため、これは当てはまらないようです

では、 x86アーキテクチャのアセンブリでコーディングし、Gas 構文を使用する場合: スタックは、既に実装されている単なるデータ構造なのでしょうか? それとも、実際にハードウェア レベルで実装されているのでしょうか。それとも別のものですか?また、他のチップ セットのほとんどのアセンブリ言語には、スタックが既に実装されていますか?

これが少しばかげた質問であることはわかっていますが、実際にはかなり混乱しています。

0 投票する
2 に答える
2169 参照

c++ - C++ からの Lua スタック項目の値の確認

Lua でスタックの一番上の値を確認するにはどうすればよいですか?

次の C++ コードがあります。

問題のファイルの内容は、

何か案は?