問題タブ [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 投票する
12 に答える
15459 参照

c++ - メモリ管理、ヒープ破損、およびC ++

だから、私はいくつかの助けが必要です。私はC++でプロジェクトに取り組んでいます。しかし、どういうわけかヒープを壊してしまったと思います。std::stringこれは、クラスにを追加し、別のクラスから値を割り当てたという事実に基づいていstd::stringます。

スタックダンプでシステムがクラッシュします。したがって、基本的には、コードとメモリ管理のすべてを停止して調べ、どこで失敗したかを見つける必要があります。コードベースはまだ小さい(約1000行)ので、これは簡単に実行できます。

それでも、こういうのは頭がおかしいので、捨てようと思いました。私はLinuxシステムを使用していて、をいじくり回しましvalgrindた。私が何をしているのか完全にはわかりませんstd::stringが、のデストラクタは無効なフリーであると報告されました。Google検索から「ヒープの破損」という用語を取得したことを認めなければなりません。この種のものに関する一般的な目的の記事も同様にいただければ幸いです。

(前にrm -rf ProjectDir、C#でもう一度やり直してください:D)

編集:私はそれを明確にしませんでしたが、私が求めているのは、この種のメモリの問題を診断するためのアドバイスです。std :: stringのものが正しいことを知っているので、それは私がやったことです(またはバグですが、Selectに問題はありません)。私が書いたコードをチェックでき、非常に賢い人ならすぐに問題を見つけることができると確信していますが、この種のコード分析を私の「ツールボックス」に追加したいと思います。

0 投票する
9 に答える
9528 参照

c++ - ヒープ上にオブジェクトが作成されないようにするにはどうすればよいですか?

プラットフォームに依存しないC++コードで、オブジェクトがヒープ上に作成されないようにする方法を知っている人はいますか?つまり、クラス「Foo」の場合、ユーザーがこれを実行できないようにします。

そして、これを行うことだけを許可します。

誰かアイデアはありますか?

乾杯、

0 投票する
9 に答える
74099 参照

c - Cで利用可能なスタックサイズを確認する

GCC 3.4.5 (mingw-special vista r3) で MinGW を使用しています。

私の C アプリケーションは多くのスタックを使用するので、スタックが不足しそうになった場合に状況をきれいに処理できるように、プログラムでスタックがどれだけ残っているかを知る方法はないかと考えていました。

そうでない場合、スタックスペースが不足する可能性があるという問題を回避する方法は他にありますか?

どのサイズのスタックから始めればよいのかわからないので、プログラムでもそれを特定する必要があります。

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

linux - Linux マルチスレッド アプリのスタック使用量の測定

Linux 組み込みプラットフォーム用のマルチスレッド アプリを開発しています。

現時点では、(pthread_set_attr を使用して) 各スレッドのスタック サイズをかなり大きなデフォルト値に設定しています。アプリケーションのメモリ使用量を減らすために、各スレッドの値をより小さな値に微調整したいと考えています。プログラムがクラッシュするまで、各スレッドのスタック サイズを徐々に小さい値に設定するという試行錯誤のルートをたどることができますが、アプリケーションはそれぞれ完全に異なる機能/属性を持つ最大 15 個のスレッドを使用するため、そのアプローチには非常に時間がかかります。

むしろ、各スレッドのスタック使用量を直接測定できることを望んでいます。これを行うために人々が推奨できるユーティリティはありますか? (たとえば、私は vxWorks のバックグラウンドを持っており、vxWorks シェルから「ti」コマンドを使用すると、スタックの使用状況に関する統計情報や、タスク ステータスに関するその他の有用な情報が直接得られます。)

ありがとう

0 投票する
4 に答える
2372 参照

c - C での TCP スタックへのフック

ここでやりたいのは単なるキャプチャではありません。最初にパケットをキャプチャし、次にリアルタイムで特定のデータのペイロードをチェックし、それを削除し、署名を挿入し、パケットをスタックに再注入して、以前と同じように送信したいと考えています。

IPFW を使用して ipfw 迂回ソケットを読みましたが、非常に有望に見えます。パケットを変更し、迂回ソケットを使用してそれらをスタックに再注入する例についてはどうですか? また、好奇心の問題として、Java を使用してソケットからデータを読み取ることは可能でしょうか。

0 投票する
21 に答える
350875 参照

algorithm - 2 つのスタックを使用してキューを実装する方法は?

2 つのスタックがあり、他の一時変数はないとします。

2 つのスタックのみを使用してキュー データ構造を「構築」することは可能ですか?

0 投票する
30 に答える
1718159 参照

memory-management - スタックとヒープとは何ですか?

プログラミング言語の本では、値型はスタック上に作成され、参照型はヒープ上に作成されると説明されていますが、この 2 つが何であるかは説明されていません。私はこれについての明確な説明を読んだことがありません。スタックとは何かを理解しています。しかし、

  • それらはどこにあり、何ですか (物理的には実際のコンピューターのメモリ内にあります)。
  • それらは OS または言語ランタイムによってどの程度制御されますか?
  • 彼らの範囲は何ですか?
  • それぞれの大きさは何で決まるのですか?
  • 何が速くなるの?
0 投票する
4 に答える
4195 参照

.net - IIS では .NET コードからスタック オーバーフローが発生するが、Winforms では発生しない

過去8時間ほど追跡/解決しようとしてきた厄介なスタックオーバーフローがあり、アドバイスが必要だと思うところまで来ました。

詳細: 興味深いことに、通常の winforms アプリケーションのコンテキストで呼び出された場合、このコードは問題なく動作しますが、私はソフトウェアの Web ベース バージョンを作成する任務を負っています。 IIS で実行されている ASPX ページ。私が最初にしたことは、アタッチして、Visual Studio を介して通常の .NET デバッグを試みることでした。例外の時点で、コール スタックは比較的浅く (コードの約 11 フレームの深さ)、スタック オーバーフローの通常の疑い (不適切な再帰、自己呼び出しコンストラクター、例外ループ) を見つけることができませんでした。

だから私は、windbg と SOS を分解することに自分自身を辞任しました。何時間も遊んだ後、役に立つデータがいくつかあると思いますが、それを分析する助けが必要です。

最初は、スタック オーバーフローが発生する直前に壊れていた !dumpstack です。

そこにはたくさんのものがありますが、私の(確かに限られた)スタック分析知識ではループを示しているものは何もありません。ただし、この次のセクションには何らかの価値があると思います。これは、同じブレークポイントで取得した !dumpstackobjects です。

^^ この投稿に合わせるために、上記の一部を切り取る必要がありましたが、このまま続くと想像してみてください ^^

カスタム コードの詳細は無視してください。これはすべて私には過剰に思えますが、私はスタックの専門家ではありません。上記のスタック オブジェクト (1500 以上あります) のほとんどは関数パラメーターではないため、そこに属していないと思います。以下は、スタック上でこれらすべての項目を生成する種類のコードの例です (このような大量のコードが実行されます)。

私は VB の専門家でもありません (このコードは、私が通常は使用しないアプリケーションの別の部分からのものです) が、このようなコードでスタックがいっぱいになるのは正常ですか? 誰かが洞察を持っている場合、またはこの種のものに関する情報を含むリソースの方向性を教えてくれる場合は、大歓迎です. ご覧いただきありがとうございます。

0 投票する
15 に答える
2114 参照

c# - ++が+1と同じ結果を生成しないのはいつですか?

次の2つのC#コードスニペットは、異なる結果を生成します(再帰呼び出しの前後の両方で変数レベルが使用されると想定しています)。なんで?

以下の回答のいくつかを読んだ後、この問題を欺く方法を強調するために、level ++、++ level、およびlevel+1のスタックトレースを投稿する価値があると思いました。

この投稿のためにそれらを簡略化しました。再帰呼び出しシーケンスはDoStuff(1)で始まります。

//レベル++

//++レベル

//レベル+1

0 投票する
10 に答える
2564 参照

c - 優れた設計でスタックスペースを確保するには?

RTOSを備えたRAM制限付き組み込みマイクロコントローラー用にCでプログラミングしています。

私は定期的にコードを短い関数に分割していますが、すべての関数呼び出しにはより多くのスタック メモリが必要です。すべてのタスクは自分のスタックを必要とし、これはプロジェクトの重要なメモリ消費者の 1 つです。

コードを適切に整理して読みやすくし、メモリを保持する代替手段はありますか?