問題タブ [memory-address]
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.
java - 配列のメモリアドレス-Java
配列インデックスのメモリアドレスを取得することを知っている人はいますか?(cのように)
memory - printfに関するお問い合わせ
変数のアドレスを出力すると、どのアドレスが出力されるでしょうか?
それが仮想メモリの場合、なぜそうなのですか?
誰かもっと説明してくれませんか...
string - 文字列を保存し、ATmega168VでASM言語で操作する(最初の宿題)
文字列をメモリに保存し、その文字列にアクセスして小文字を大文字に、またはその逆に変更しようとしています。私が理解していないのは、文字列のアドレスとそのアドレスのASCII値を参照する方法です。データとアドレスの操作に問題があるだけで、ロジックを理解できると思います。2つを区別するにはどうすればよいですか?注:これは宿題のコーディング課題です。
c++ - C++ - 「new」を使用してヒープにメモリを割り当てる
次のステートメントがあるとします。
int *x = new int;
この場合、ヒープにメモリを動的に割り当てました。つまり、オブジェクトのreserved
メモリ アドレスを取得しました。int
その後、私は次のようにしました:
delete x;
つまりfreed up
、ヒープ上のメモリ アドレスです。
その後、私は再び次のことをしたと言います:
int *x = new int;
x
削除される前にヒープで指していたのと同じ古いメモリアドレスを指しますか?
以前にこれを行ったとしたらどうなりますかdelete
:
x = NULL;
そして、これを行いました:
int *x = new int;
古いもの以外のx
ヒープ上のメモリアドレスを指しますか?
ありがとう。
c - 読み取りシステムコールの動作を理解できませんでした
だからこれは私が実行しようとしているコードです:
これは私がターミナルで得た出力です
質問1:読み取り呼び出しでアドレス2000を入力すると、read(STDIN_FILENO,(int*)2000,3);
アドレスはどこにありますか。これは私がアクセスしようとしているRAMの絶対アドレスだと思います。私は正しいですか、それともオフセットされてスタックセグメントベースアドレスに追加されますか。私は知らない。プログラムは私SEGFAULT
にメモリ違反を与えていませんむしろ私に与えますBad address
質問2:さて、入力をasとして指定すると、コードがクラッシュしlls
、bashがその「lls」の「ls」部分を実行します。その理由は、最初の「l」を読み取った後にコードがクラッシュし、残りの「ls」の部分がbashによって実行されるためです。しかし、なぜbashが左側の「ls」部分を実行しているのか。コードがクラッシュし、bashがその親プロセスであったとしても、作成したコードによって開かれたファイル記述子(STDIN_FILNO)から読み取るべきではないため、bashがそうするのはなぜですか。( そう思います)...
御時間ありがとうございます。
c++ - char データのアドレスが表示されないのはなぜですか?
出力は次のとおりです。
なんで?
もう 1 つの興味深い点: int、char、string が公開されている場合、出力は次のようになります。
something_2 - something
は常に 8です。なぜですか? (9 ではない)
c - C 標準アドレッシング簡略化の矛盾
セクション §6.5.3.2「アドレスと間接演算子」¶3 は述べています (関連するセクションのみ):
単項 & 演算子は、そのオペランドのアドレスを返します。... オペランドが単項演算子の結果である場合、
*
その演算子も演算子も&
評価されず、演算子に対する制約が適用され、結果が左辺値ではないことを除いて、結果は両方が省略されたかのようになります。同様に、オペランドが演算子の結果である場合、演算[]
子もによって暗示される&
単項も評価されず、結果は、演算子が削除され、演算子が演算子に変更されたかのようになります。...*
[]
&
[]
+
これは、次のことを意味します。
完全に合法で、0 とNUM
(10) を出力する必要があります。標準は、これらのケースの両方を最適化する必要があることを非常に明確に示しています。
ただし、以下を最適化する必要はないようです。
これはひどく矛盾しているようです。sizeof(int)
上記のコードがプラスの (ありそうにない) パディング (おそらく 4)を出力してはならない理由はわかりません。
式を単純化することは、単純なアドレスとオフセットで&->
ある と概念的に (IMHO) 同じになります。これは、オペレーター&[]
を使用して実行する可能性があるのではなく、コンパイル時に決定できるオフセットですらあります。[]
これが一見矛盾しているように見える理由について、何か根拠はありますか?
c++ - そのクラスのオブジェクトの配列が与えられた場合、クラスメンバーベクトルのメモリ割り当てに問題がありますか?
私の基本的なプログラム構造は次のとおりです。
したがって、Nが5の場合、出力は次のようになります。0xbffff828 0xbffff828 0xbffff828 0xbffff828 0xbffff828 \ n
0xbffff828 0xbffff828 0xbffff828 0xbffff828 0xbffff828
つまり、各オブジェクトのベクトルはメモリ内の同じスペースを占有します。また、プログラム出力もこれを裏付けています。異なるオブジェクトを介してベクター内のデータにアクセスすると、異なるはずの場合でも同じ値が得られるためです。もちろん、もう1つの奇妙なことは、ベクトルのアドレスがオブジェクトのアドレスと同じになることです。
c - Cのソケットを介してメモリアドレスを送受信する方法は?
Cのソケットを介してメモリアドレスを送受信したい.私が持っているものは次のとおりです:
を使用してポインターアドレスを出力する方法はprintf
、を使用することです。%p
ただし、これはたとえば 0x0021ef1a を出力します。私が欲しいのは次のとおりです: 0021ef1a
受信側では、受信したバイトを変換して に戻す方法はvoid*
?
ああ: コードは 32 ビットでも 64 ビット システムでも動作するはずです ;) さらに、コードは -Wall -Werror を使用してコンパイルする必要があります。
助けてくれてありがとう!良い週末を、ジョナス
c - アドレス可能性の制限?
次のアドレスで C テキストを読み込んでいます。
https://cs.senecac.on.ca/~lczegel/BTP100/pages/content/compu.html
セクション: Addressible Memoryでは、「アドレス指定可能なプライマリ メモリの最大サイズは、アドレス レジスタのサイズによって異なります。」
それがなぜなのかわかりません。
誰か明確な説明をお願いできますか?
どうもありがとう。