2

私が理解できる限り、RAMはセルの行と列のネットのように編成されており、各セルには1バイトが含まれています。また、各セルには、16進法で書き込まれたアドレスメモリのラベルが付いています。これはそうですか?さて、c ++プログラムを実行するとき、私はそれがストレージの手段としてRAMを使用していると思います。この場合、c ++のcharタイプはストレージの基本単位であるため、このcharのサイズはセル(1バイト)とまったく同じですか?charのサイズはセルのサイズに依存しますか(inセルのサイズが1バイトでない場合)?、それはコンパイラに依存しますか?どうもありがとう。

4

1 に答える 1

0

RAMを行と列のネットとして視覚化するのは簡単です。これは、ほとんどのCSクラスが学生にも教える方法であり、ほとんどの目的で、これは概念レベルでうまくいくでしょう。C ++プログラムを作成するときに知っておく必要があることの1つは、スタックとヒープという2つの異なるメモリの概念です。スタックは、変数がスコープに入ったときに変数を格納するメモリです。それらがスコープ外になると、それらは削除されます。これをスタック実装(FIFO)と考えてください。

現在、ヒープメモリは少し複雑です。これは、変数のスコープとは何の関係もありません。特定の値を含むように固定メモリ位置を設定でき、それを解放するまでそこにとどまります。'new'キーワードを使用して、ヒープメモリを設定できます。例:int * abc = new int(2); これは、ポインタabcが値「2」のヒープ位置を指していることを意味します。deleteこのメモリを使い終わったら、キーワードを使用してメモリを明示的に解放する必要があります。そうしないと、メモリリークが発生します。

Cでは、のような文字定数の型aは実際にはint、サイズが4のです。C++では、型はchar、サイズが1のです。サイズはコンパイラに依存しません。int、floatなどのサイズは、システムの構成(16/32/64ビット)によって異なります。次のステートメントを使用します。

int a=5;
cout<<sizeof(a)<<endl;

システム内のintのサイズを決定します。

于 2013-01-12T08:52:22.067 に答える