問題タブ [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++ - 奇妙なMSC8.0エラー:「ESPの値が関数呼び出し全体で適切に保存されませんでした...」
最近、一部のVisual Studioプロジェクトをライブラリに分割しようとしましたが、ライブラリプロジェクトの1つを依存関係として持つテストプロジェクトでは、すべてが正常にコンパイルおよびビルドされたようです。ただし、アプリケーションを実行しようとすると、次の厄介な実行時エラーメッセージが表示されました。
実行時チェックの失敗#0-ESPの値は、関数呼び出し全体で適切に保存されませんでした。これは通常、異なる呼び出し規約で宣言された関数ポインターを呼び出した結果です。
関数の呼び出し規約(__cdeclなど)を指定したことはなく、すべてのコンパイラスイッチをデフォルトのままにします。私がチェックしたところ、プロジェクト設定は、ライブラリとテストプロジェクト全体で規約を呼び出すために一貫しています。
更新:開発者の1人が、「BasicRuntimeChecks」プロジェクト設定を「Both(/ RTC1、equiv。to / RTCsu)」から「Default」に変更し、ランタイムが消えて、プログラムが明らかに正しく実行されたままになりました。私はこれをまったく信用していません。これは適切な解決策でしたか、それとも危険なハックでしたか?
networking - OSI モデル - プレゼンテーションとセッション層は何のためにあるのか?
そのため、アプリケーション層と、トランスポート層の下 (およびトランスポート層を含む) のすべてをよく理解していると感じています。
ただし、セッション層とプレゼンテーション層については、完全には理解できません。ウィキペディアで単純化された説明を読んだことがありますが、これらのレイヤーを分離することが役立つ理由の例はありません。
そう:
- セッション層とは?それは何をしますか? また、どのような状況で、単にアプリでトランスポートと通信するよりもセッション レイヤーを使用する方がよいでしょうか?
- プレゼンテーション層とは何ですか? (上記と同じ質問)
-アダム
windows - Windows (GCC) でスタック サイズを増やす
GCC でコンパイル/リンク時に Windows アプリケーションのスタック サイズを増やす方法はありますか?
c++ - どちらが速いですか: スタック割り当てまたはヒープ割り当て
この質問はかなり初歩的なものに聞こえるかもしれませんが、これは私が一緒に働いている別の開発者との議論です。
ヒープ割り当てではなく、可能な限りスタック割り当てに注意していました。彼は私に話しかけ、私の肩越しに見守っていて、パフォーマンスに関しては同じなので必要ないとコメントしました。
私は常に、スタックの成長は一定の時間であり、ヒープ割り当てのパフォーマンスは、割り当て (適切なサイズの穴を見つける) と割り当て解除 (断片化を減らすために穴を折りたたむ) の両方の現在のヒープの複雑さに依存するという印象を受けていました。私が間違っていなければ、多くの標準ライブラリの実装では、削除中にこれを行うのに時間がかかります)。
これは、おそらくコンパイラに大きく依存するものだと思います。特にこのプロジェクトでは、 PPCアーキテクチャ用のMetrowerksコンパイラを使用しています。この組み合わせに関する洞察は最も役に立ちますが、一般的に、GCC と MSVC++ の場合はどうでしょうか? ヒープ割り当てはスタック割り当てほどパフォーマンスが高くないですか? 違いはありませんか?または、違いが非常に小さいため、無意味なマイクロ最適化になります。
macos - OSX Leopard ドックのカスタム スタックのコマンド ライン構文は何ですか?
デフォルトで提供される「ダウンロード」の他に、OSX Leopard ドックにカスタム スタックを追加するためのコマンド ライン構文があることは知っています。それは何ですか?
winapi - 最適なスレッドスタックサイズを決定する方法は?
実際には、初期コミットと合計予約の 2 つのサイズがあります。
静的解析と動的解析のどちらを使用していますか? どのツール?どのテクニック?
c - スタックメモリの読み取り
次のコードを使用します。
関数が呼び出されると、SPARCマシンでは正常に実行されますが、Solaris10を実行しているi386でのsegfaultsは
fileName
約30文字のヌル文字で終了します。fileName
使用範囲を超えて読み取ろうとすると、memcpy()
一部のシステムでセグメンテーション違反が発生するようです。
これはレガシーコードであり、簡単に修正できます。しかし、私が知りたいのは、これが失敗するかどうかにつながる可能性のある根本的な特性についてです。スタックの読み取り違反に関連していますか?いくつかの境界交差?これはメモリセグメンテーションに関連しており、失敗するかどうかは偶然です(メモリセグメンテーション/ページングがメモリ管理とOSによってどのように行われるかによって異なります)。
operating-system - カーネル開発で使用されるスタックサイズ
私はオペレーティングシステムを開発していて、カーネルをプログラミングするのではなく、カーネルを設計しています。このオペレーティングシステムはx86アーキテクチャを対象としており、私のターゲットは最新のコンピューターを対象としています。必要なRAMの推定数は256Mb以上です。
各スレッドのスタックをシステムで実行するのに適したサイズはどれくらいですか?最大長に達した場合にスタックを自動的に拡張できるようにシステムを設計する必要がありますか?
RAMのページが4kまたは4096バイトであることを正しく覚えていれば、それは私にはそれほど多くないように思えます。特に再帰を多く使用する場合は、一度に1000を超えるインテガーをRAMに入れたいと思う時期がはっきりとわかります。さて、本当の解決策は、プログラムがmalloc
独自のメモリリソースを使用して管理することでこれを実行することですが、実際には、これに関するユーザーの意見を知りたいと思います。
4kは、最新のコンピュータープログラムをスタックするのに十分な大きさですか?スタックはそれよりも大きくする必要がありますか?スタックは、あらゆるタイプのサイズに対応するために自動拡張する必要がありますか?私は、実用的な開発者の観点とセキュリティの観点の両方からこれに興味を持っています。
4kはスタックには大きすぎますか?通常のプログラム実行を考えると、特にC ++のクラスの観点からmalloc/new
、関数呼び出しでスローされるデータを最小限に抑えるために、優れたソースコードはクラスの作成時に必要なデータになりがちです。
私がまだ理解していないのは、プロセッサのキャッシュメモリのサイズです。理想的には、スタックは処理を高速化するためにキャッシュに存在すると思いますが、これを実現する必要があるかどうか、またはプロセッサが処理できるかどうかはわかりません。私はテスト目的で通常の退屈な古いRAMを使用することを計画していました。決められない。オプションは何ですか?
c++ - ac / c++プログラムで起こりうる/潜在的なスタックオーバーフローの問題を検出する方法は?
アプリのスタック スペースの量と、実行中のスタック使用量の最高水準点を確認する標準的な方法はありますか?
また、実際のオーバーフローという恐ろしいケースでは何が起こるでしょうか?
クラッシュしたり、例外やシグナルをトリガーしたりしますか? 標準はありますか、それともすべてのシステムとコンパイラで異なりますか?
特に Windows、Linux、および Macintosh を探しています。
c# - C# でスタックを反復処理する最速の方法
GetEnumerator() を使用して IEnumerator.Current をキャストするのはコストがかかると感じています。より良い提案はありますか?
より優れたパフォーマンスで同様の機能を提供する場合は、別のデータ構造を使用することにオープンです。
考えた後:
キャストが不要になるように、一般的なスタックの方が良いアイデアでしょうか?