タグ付けされた質問 「stack」

スタックは、後入れ先出し(LIFO)の抽象データ型とデータ構造です。コールスタックに関する質問については、代わりに[callstack]または[stack-pointer]を使用してください。Haskellビルドツールに関する質問については、代わりに[haskell-stack]を使用してください。C ++の標準スタックに関する質問については、代わりに[stdstack]を使用してください。

27
スタックとヒープはどこにありますか?
プログラミング言語の本では、これらの2つが何であるかを説明することなく、値型はスタック上に作成され、参照型はヒープ上に作成されると説明されています。私はこれの明確な説明を読んでいません。私は何を理解していますスタックとはですか。だが、 それらはどこにありますか(物理的には実際のコンピュータのメモリ内)? それらは、OSまたは言語ランタイムによってどの程度制御されていますか? それらの範囲は何ですか? それぞれのサイズを決定するものは何ですか? 何が速くなるのですか?


5
Java Vector(およびStack)クラスが廃止または廃止されたと見なされるのはなぜですか?
Java Vectorが旧式のクラス、廃止された、または廃止されたのはなぜですか? 同時実行で使用する場合、その使用は有効ではありませんか? また、オブジェクトを手動で同期したくない場合で、基になる配列の新しいコピーを作成する必要なくスレッドセーフなコレクションを使用したい場合は、使用しても問題ありCopyOnWriteArrayListませVectorんか? のStackサブクラスであるについてVectorはどうですか?それの代わりに何を使用すればよいですか?

23
どちらが速いか:スタック割り当てまたはヒープ割り当て
この質問はかなり初歩的に聞こえるかもしれませんが、これは私が一緒に働く別の開発者との議論でした。 ヒープに割り当てるのではなく、スタック割り当てに可能な限り注意を払いました。彼は私に話し、私の肩越しに見守っていて、彼らは同じパフォーマンスであるので、それは必要ではないとコメントしました。 スタックの増加は一定の時間であり、ヒープ割り当てのパフォーマンスは現在のヒープの複雑さ(適切なサイズのホールを見つける)と割り当て解除(ホールを縮小して断片化を減らす)の両方に依存するという印象を受けました。多くの標準ライブラリの実装では、私が間違っていない限り、削除中にこれを行うのに時間がかかります)。 これは、おそらくコンパイラに大きく依存するものとして私を襲います。特にこのプロジェクトでは、PPCアーキテクチャにMetrowerksコンパイラを使用しています。この組み合わせに関する洞察が最も役立ちますが、一般的に、GCCとMSVC ++の場合はどうなりますか?ヒープ割り当てはスタック割り当てよりもパフォーマンスが高くありませんか?違いはありませんか?または、違いが非常に小さいので、無意味なマイクロ最適化になります。
503 c++  performance  memory  stack  heap 

25
alloca()の使用が優れたプラクティスと見なされないのはなぜですか?
alloca()の場合のように、ヒープではなくスタックにメモリを割り当てますmalloc()。したがって、ルーチンから戻ると、メモリが解放されます。したがって、これは実際に、動的に割り当てられたメモリを解放するという私の問題を解決します。割り当てられたメモリの解放はmalloc()大きな頭痛の種であり、何らかの理由で失敗した場合は、あらゆる種類のメモリの問題につながります。 alloca()上記の機能にもかかわらず、使用が推奨されないのはなぜですか?
401 c  stack  malloc  allocation  alloca 


30
Android:バックスタックをクリアする
Androidでは、A、B、Cなどのアクティビティがあります。 Aでは、このコードを使用してBを開きます。 Intent intent = new Intent(this, B.class); startActivity(intent); Bでは、このコードを使用してCを開きます。 Intent intent = new Intent(this, C.class); startActivity(intent); ユーザーがCのボタンをタップしたら、Aに戻ってバックスタックをクリアします(BとCの両方を閉じます)。したがって、ユーザーが戻るボタンBとCを使用しても表示されない場合は、次のことを試しています。 Intent intent = new Intent(this, A.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); しかし、アクティビティAに戻っているときに[戻る]ボタンを使用すると、BとCが引き続き表示されます。これを回避するにはどうすればよいですか?

9
スタック破壊が検出されました
a.outファイルを実行しています。実行後、プログラムはしばらく実行され、次のメッセージで終了します。 **** stack smashing detected ***: ./a.out terminated* *======= Backtrace: =========* */lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)Aborted* これの考えられる理由は何ですか?それをどのように修正しますか?
246 c  exception  stack 

6
Pythonは末尾再帰を最適化しますか?
次のエラーで失敗する次のコードがあります。 RuntimeError:再帰の最大深度を超えました これを書き直して、末尾再帰の最適化(TCO)を可能にしようとしました。TCOが発生した場合、このコードは成功したはずです。 def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum + n) print(trisum(1000, 0)) PythonはどのタイプのTCOも実行しないと結論付けるべきでしょうか、それとも単に異なる方法で定義する必要があるだけでしょうか?


13
Java ArrayList最初に要素を追加する方法
ArrayListなんでもキューに要素を追加する必要がありますが、要素を追加する関数を呼び出すと、配列の先頭に要素を追加して(インデックスが最小になるように)、配列に10要素がある場合は追加します新しい結果として、最も古い要素(インデックスが最も高い要素)が削除されます。 誰か提案はありますか?
183 java  arrays  arraylist  stack 

9
C ++のスタック、静的、およびヒープ
私は検索しましたが、これらの3つの概念をよく理解していません。動的割り当て(ヒープ内)を使用する必要があるのはいつですか?その実際の利点は何ですか?静的およびスタックの問題は何ですか?ヒープに変数を割り当てずにアプリケーション全体を作成できますか? 他の言語には「ガベージコレクター」が組み込まれているので、メモリを気にする必要はありません。ガベージコレクターは何をしますか? このガベージコレクタを使用して実行できなかったメモリを自分で操作するにはどうすればよいでしょうか。 誰かがこの宣言でそれを私に言ったら: int * asafe=new int; 「ポインタへのポインタ」があります。どういう意味ですか?それは次の点で異なります。 asafe=new int; ?

9
Cでは、ブレースはスタックフレームとして機能しますか?
中括弧の新しいセット内に変数を作成した場合、その変数は閉じ中括弧のスタックからポップされますか、それとも関数の最後までハングしますか?例えば: void foo() { int c[100]; { int d[200]; } //code that takes a while return; } ウィルd中にメモリを占有するcode that takes a whileセクション?
153 c  memory  stack 

5
ベクトルが割り当てられると、それらはヒープまたはスタック上のメモリを使用しますか?
次の説明はすべて正しいですか? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack and Type* will be …
151 c++  stl  vector  stack  heap 

22
2つのキューを使用してスタックを実装する
同様の質問が以前にそこで行われましたが、ここでの質問は、2つのキューをスタックとして使用することとは逆です。質問... 彼らの標準的な操作で2つのキューを考えると(enqueue、dequeue、isempty、size)、その標準的な操作でスタックを実装(pop、push、isempty、size)。 ソリューションには2つのバージョンがあるはずです。 バージョンA:アイテムをプッシュする場合、スタックは効率的でなければなりません。そして バージョンB:アイテムをポップするとき、スタックは効率的でなければなりません。 特定の言語の実装よりもアルゴリズムに興味があります。ただし、私がよく知っている言語で表現されたソリューションを歓迎します(java、c#、python、vb、JavaScript、php)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.