問題タブ [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++ - C /C++スタック割り当てについて
C ++(およびC)を研究しているときに、スタック割り当ての動作に関していくつかの特定の疑問がありました。それは、次の解決策を見つけることができないということです。
スタック割り当てはmalloc/free関数を暗黙的に呼び出しますか?そうでない場合; スタック割り当てとヒープ割り当ての間に競合がないことをどのように保証しますか?
そうであれば; C++のスタック割り当ては暗黙的にnew/ deleteも呼び出しますか?そうであれば; クラスの新しい演算子をオーバーロードすると、そのスタック割り当てに影響しますか?
それはVC++で紛らわしい結果をもたらしました。しかし、VC ++は完全に標準に準拠しているわけではないので(またはそう聞いたので)、ここで質問したほうがいいと思いました...
stack - ヒープスプレー、ヒープオーバーフロー、ヒープオーバーランの違いは何ですか?
ヒープスプレー、ヒープオーバーフロー、ヒープオーバーランの違いは何ですか?
これらの用語は、バッファ スプレー、バッファ オーバーフロー、バッファ オーバーランに置き換えることができますか?
それらも同じ定義を持っていますか?
algorithm - 2 つのキューを使用してスタックを実装する
以前にも同様の質問がありましたが、ここでの質問はその逆で、2 つのキューをスタックとして使用しています。質問...
標準操作 ( 、 、、 )を持つ 2 つのキューが与えられた場合、その標準操作 ( enqueue
、dequeue
、isempty
、 )をsize
持つスタックを実装します。pop
push
isempty
size
ソリューションには2 つのバージョンが必要です。
- バージョンA : アイテムをプッシュするとき、スタックは効率的である必要があります。と
- バージョンB : アイテムをポップするとき、スタックは効率的である必要があります。
特定の言語の実装よりもアルゴリズムに興味があります。ただし、私がよく知っている言語 ( java、c#、python、vb、javascript、php ) で表現されたソリューションを歓迎します。
iphone - iPhoneで再帰を避けるべきですか?
iPhone で実行されるコードで再帰を避けるべきですか?
または別の言い方をすれば、iPhoneの最大スタックサイズを知っている人はいますか?
c++ - __stdcallと破損したスタック(C ++)を使った思考実験
今日、私の心は関数ポインターのトピックについてさまよっていました。そして、頭の中で次のシナリオを思いつきました。
このコードはスタックを破壊するので、このコードを実行した場合、どのような種類の問題が発生する可能性がありますか?
私は自分自身を調査してこれを行いますが、開発マシンから1週間離れています。
編集:ちょっと待ってください、私はもう少し考えていました。コメントで観察されているように、このコードの目的は、すべてが言われ終わったときにスタックにパラメーターを残すことでした(呼び出し元はスタックに2つのパラメーターを置き、呼び出し先は1つのパラメーターのみを期待します)は1つだけをポップします)。しかし、私のキャストは呼び出し規約について言及していないので、少なくとも発信者の観点からは、stdcallをキャストしていませんか?int function(int)は引き続きパラメーターをスタックからポップしますが、呼び出し元はキャストのために関数が__cdecl(デフォルト)であると考えるように戻りますか?(つまり、合計3つのパラメーターがポップされましたか?)
EDIT2:ロブによって確認されたように、その2番目の質問に対する答えはイエスです。スタックにパラメータを残したい場合は、__stdcallを言い換える必要があります。
assembly - NASMの「プッシュバイト」をGAS構文に変換する方法は?
NASMソースをGASに「移植」していて、次のコード行が見つかりました。
GASは「pushbyte」または「pushb」を許可しません。
上記のコードをGAS構文に変換するにはどうすればよいですか?
ありがとう
c++ - C++ でのスタックの破損
C++ では、スタックが破損する可能性があります。私が推測する 1 つの方法は、境界を越えて配列にアクセスしてスタック変数を上書きすることです。破損する可能性がある他の方法はありますか?
c# - C#構造体のすべてのフィールドをデフォルト以外のコンストラクターで初期化する必要があるのはなぜですか?
このコードを試してみたい:
しかし、コンパイルに失敗します。構造体がすべてのフィールドを初期化する必要があることを理解しています。しかし、私はCLR\ILの内部で何が起こるかを理解しようとしています。他のmethod\property\thisなどの前にすべてのフィールドが必要な理由。
ありがとう。
c++ - スタックベースの回文チェッカー
プログラムに問題があります。回文をスタック経由で認識するプログラムである必要があります。すべてがうまく機能しますが、機能しないのは、機能が完了した後にスタック (元と逆) を印刷することだけです。これが私のコード全体であり、問題はケースdとeにあります:
windows - _freea への呼び出しは本当に必要ですか?
DevStudio を使用して Windows で C/C++ アンマネージを使用して開発しています。
ヒープではなくスタックにメモリを割り当てたいのは、そのメモリを手動で解放する必要がないためです (スマート ポインターとそのすべてについて知っています。必要なメモリ割り当ての非常に特殊なケースがあります)。 A2W() および W2A() マクロの使用に似ています。
_allocaはそれを行いますが、非推奨です。代わりにmallocaを使用することをお勧めします。しかし、_malloca のドキュメントには、_malloca への呼び出しごとに ___freea への呼び出しが必須であると記載されています。_malloca を使用するという私の目的が無効になるため、代わりに malloc または new を使用します。
リークせずに _freea を呼び出さなくても済むかどうか、および内部にどのような影響があるかを誰かが知っていますか?
そうしないと、非推奨の _alloca 関数を使用することになります。