問題タブ [stack-memory]
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# - When is a fixed size array allocated on the stack?
I have the following method to copy bytes from a socket stream to disk:
What I am curious about is: will buffer
be allocated on the stack or on the
heap? To be sure, I could make this method unsafe, and add the fixed
keyword to
the variable declaration, but I don't want to do that ifn I don't have to.
c++ - ヒープ vs データ セグメント vs スタック割り当て
次のプログラムを見ていますが、メモリがどのように割り当てられているのか、またその理由がわかりません。
上記のコードでは、最後のコードは明らかにヒープにあります。ただし、私が理解text2
しているように、プログラムのデータセグメントにありtext1
、スタック上にある可能性があります。それとも私の仮定が間違っていますか?ここで正しい仮定は何ですか?このコンパイラは依存していますか?
c - C 変数の割り当て時間と空間
次のようなtest.cファイルがある場合
では、while ループでこの変数の 1 つを使用する必要がある場合、どの変数が優先されるでしょうか?
ここでは少し漠然としているかもしれませんが、時間/空間の割り当ての違いが実際に関連しているかどうかを知りたい.
linux - プロセスのメモリ量はどのように決定されますか?
私の理解では、プロセスが実行中の場合、プロセスには自由に使えるメモリがいくらかあります。スタックのサイズが大きくなると、スタックはプロセスの一方の端から構築され (スタックの前にあるグローバル変数は無視されます)、ヒープは別の端から構築されます。スタックまたはヒープに追加し続けると、最終的にすべてのメモリがこのプロセスで使い果たされます。
プロセスに割り当てられるメモリの量はどのように決定されますか? さまざまな変数に依存しているとしか想像できませんが、可能な限り一般的な応答は素晴らしいでしょう. 具体的に言うと、C++ で書かれた Linux プロセスに興味があります。
multidimensional-array - C ++ / CLIの2D配列のメモリが不足していませんか?
私は10個の配列を扱っており、そのうちのいくつかは1024x1392の2倍です。
私はそれらをヒープに動的に割り当てようとしました:
しかし、それでもエラーが発生します
106は、上記のコードで配列の初期化を開始する場所です。
私は本当にスペースが不足していますか、それとも何か間違ったことをしていますか?
c# - 1バイト*をStream.Read(byte []、int、int)に渡す
.NET関数Stream.Read()は、パラメーターとしてbyte[]を取ります。代わりにstackallocされたバイト*を渡す方法はありますか?これにより、余分なヒープ割り当てを行う必要がなくなり、ガベージコレクションの時間を節約できます。この関数は短く、繰り返し呼び出されます。
static - 静的オブジェクト vs. スタックおよびヒープ ベースのオブジェクト
次の定義に出会いました。
static
オブジェクトは、構築および作成された時点からプログラムの終了まで存在するオブジェクトです。したがって、スタックおよびヒープベースのオブジェクトは除外されます。静的オブジェクトは、プログラムが終了すると破棄されます。つまり、実行が終了するとデストラクタが呼び出されmain
ます。
スタックおよびヒープベースのオブジェクトが除外されるのはなぜですか???
スタックとヒープについて私が知っていることは次のとおりです。スタックは、実行前にすべての変数が格納されるシステム メモリの一部です。ヒープは、動的に割り当てられたメモリなど、実行時にすべての変数が格納されるシステム メモリの一部です。これは、コードで整数変数を宣言し、i
それに say の値を割り当てると123
、コンパイラはコンパイル時 (実行前) に値を認識するため、それがスタックに格納されることを意味します。しかし、ポインター変数を定義し、それを別の場所で初期化したい場合、それはコンパイル時にコンパイラーに認識されないため、ヒープに格納されます。
memory - Is there an online/standalone Computer Simulator / Demo program?
I would like to be able to give students an awareness of exactly what happens during program execution inside a modern computer - e.g. use of memory addresses, references, stack, heap and so on.
Ideally I'd like for them to be able to play with some kind of demo where a simple application (e.g. calculator, rudimentary database etc.) runs and can be paused and the state of the machine running the program viewed at quite a low level via a 'pretty' GUI.
Does such an application exist? And if not, could any super-coders advise on the feasibility of writing a piece of software like this? The target audience are probably 1st year Comp Sci students learning a modern OO language (C#, Java ideally).
EDIT:
I thought this had gone cold but someone posted today so I thought I'd better update...
I should probably have put the words 'Turing' and 'machine' into this question. I think people thought I wanted to debug Windows or something when actually I was just thinking of TMs. This is a pretty good simulator, though not pretty by today's standards.
If anyone knows of any others, I'd appreciate you posting a link. Thanks.
c++ - ヒープ/スタックの C++ 標準用語
使用すべき用語については、いくつかの不確実性があるようです。2つの異なる視点があるようです:
- 一部の人々は、バイトの位置を意味するためにヒープとスタックを使用することを好みます
- 他の人は、これらの「ヒープ」および「スタック」という用語は C++ では使用すべきではなく、代わりに「自動ストレージ期間」という用語を好むと主張しています。
しかし、明らかに、プログラマはある用語セットを使用し、標準は別の用語セットを使用します。しかし、どのような用語を使用する必要がありますか? なぜ?意味が違うという問題はまだありますか?しかし、freenode の ##C++ チャネルでスタック/ヒープ用語を使用する場合、常に意見の相違があるようです。ここで、duration!=location と結論付けましたが、それでも優先される用語を決定する必要があります。
c# - C# のスタックとヒープ
重複の可能性:
スタックとヒープの内容と場所
C# ではヒープとスタックに違いがあります。スタックはRAMで、ヒープはハードドライブだといつも思っていたことに気づきました。しかし、今はそれが正しいかどうかわかりません。そうでない場合、それらが 1 つの場所に保管されている場合の違いは何ですか?