問題タブ [pointer-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.
c - GetProcAddress奇妙な差出人住所
次のコードがntdll.dll内にポインタを返す理由を誰かが説明しますか?
PS:kernel32のエクスポートテーブルが指す関数を呼び出すと、ブレークポイントがスローされます。
c - 構造体のポインターを変数に代入する
このプログラムは、動的メモリ ベクトルを作成することになっています。私はmallocを正しく使用していると確信しています。私の本当の問題は、ポインターを使用した構文、特に構造体内のポインターです。
構造体内の int ポインターのアドレスにアクセスしようとしているので、別のポインターに割り当てることができます
私の与えられた構造体は次のとおりです。
私が仕事をしようとしている機能は次のとおりです。
これは、項目ポインタのアドレスからリスト内の項目数を減算し、目的の項目のインデックスを p のアドレスに追加することになっています。次に、p のアドレスにあるものを返します。
行 (2) は必要な構文ではないとかなり強く感じています。
これまでに試したことに応じて、getVector が呼び出されたときにプログラムがクラッシュするか、(私の推測では) いくつかのメモリ ロケーションが出力されます。
ベクトルを追加するコードは次のとおりです。
私の問題はここにあるとは思いませんが、問題がある場合は、ライン A と B に疑いがあります...
どんな洞察も大歓迎です、ありがとう!
pointers - 64 ビット ポインタの問題
Windows 7 を使用しており、プログラムの 64 ビット バージョンと 32 ビット バージョンがあります。32 ビット バージョンは問題なく動作しますが、64 ビット バージョンでは実行時に問題が発生します。リスト ビュー アイテムを作成し、列に自分の情報を入力しています。それらはすべて印刷されていますが、1 つが正しく印刷されていません。これは印刷されているものです (写真がないことをお詫びしますが、新しいメンバーとして写真を投稿することはできません):
トラック
ÍÍÍÍHRZ141
ÍÍÍÍHRZ152
実際に表示したい情報の前に4つのnull文字を配置しているようです。さらに調べてみると、アドレス指定が間違っているように見えます。エラーが発生しているコードのセクションは次のとおりです。
私のトラック名はすべて H で始まるため、これは一時的な修正です。plvdi->item.psz テキストはリスト ビュー アイテムのテキスト表示であり、audit->Truck は char[] です。次のように簡単にする必要があります。
しかし、それはうまくいかないようです。それは私に同じエラーを残します。実行すると、アドレス plvdi->item.pszText は、割り当てステートメント (while ステートメントのブレークポイント) の後、audit->Truck のアドレスよりも 4 バイト少なく、これが 4 つの null 文字を引き起こしていると思われます。私が投稿したような回避策なしでこの問題を解決する方法、なぜこれが起こっているのか、そしてなぜ 64 ビット ソリューションでのみなのか、私にはよくわかりません。この件についてご協力いただきありがとうございます。
編集:私のプログラム内で見つけた他の同様の問題から、ポインタと関係があるようです。選択ベクトルの後に来る監査クラスのすべてに問題があり、4 バイトずれているように見えました。別のクラスでは、Audit へのポインターの後に来るすべてが失敗し、文字列 (技術的には char 配列へのポインター) にも問題があることがわかりました。ポインターを持つ要素をヘッダー ファイルのクラスの最後に移動すると、すべて正常に動作するように見えました。文字列、ベクトル、またはその他の同様の構造に、32 ビット システムまたは 64 ビット システムに依存するポインターがあるかどうか、何か考えはありますか?
c++ - 個々の構造体データ メンバーの奇妙なポインター アドレス
今日、いくつかの奇妙な動作を観察しました。コードは次のとおりです。
コード :
質問 :
1.) 私が持っている唯一の質問は、なぜcout theAddress
上記のコードで奇妙な値が出てくるのでしょうか?
c
2.)奇妙なアドレスを持つポインタを逆参照することで、メンバーの値を変更できるのはなぜですか?
ありがとうございました。
ios - iOS:プロパティの設定
現在保持されているNSArrayにあるオブジェクトでプロパティを設定する場合、ポインタ(軽量)のみを格納しますか、それともコンテンツをプロパティにコピーしますか?
私の知る限りでは、ポインタを割り当てるだけのようですが、よくわかりません。
また、どのような状況で* pointer = * otherPointerまたはsetメソッド(たとえば、setDelegate)を使用すると、ポインターがあればそれを渡すのではなく、値をコピーします。常にポインタアドレスを渡すだけではいけませんか?
c - Is the order of memory addresses of successively declared variables always descending?
why does the hexadecimal value of pointer address returned is always in decreasing order?
for example here int a
was declared before int d
, so it's address always comes out to be greater than d
, and same for &b
,&e
and &c
,&f
, I want to know that is this a fixed behavior or is this compiler dependent?
I am using gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-1
)
output:
PS: I am new to c
pointers - ポインタが2つの異なるアドレスを与えるのはなぜですか?
私はこのプログラムを持っています。そして、私はいくつかの疑問を持っています。コンパイラで実行できます。Linuxでgccコンパイラを使用しています
このコードadd
では、各配列要素のアドレス値を占有し、ループを通じてそのアドレスを 1 つずつ出力します。しかし、 によって与えられたアドレス値は によって与えられたものadd
と等しくありませんが&(a[i][j])
、これらの 2 つによって与えられた値は等しいです。つまり、配列要素ごと*add
に等しいです。*(&(a[i][j]))
これがなぜそうなのか、誰かが私に説明できますか?
メモリ内のデータ配置の順序を確認するために、各要素のサイズを出力しました。add
私のコンパイラは32ビットベースであるため、との両方の場合、4ビットのギャップでアドレスを出力しました&(a[i][j])
。
最後に、配列の初期アドレスを出力します。これにより、 と同じアドレスが得られ&a[0][0]
ます。問題は、どの方法が正しいかということadd=&(a[i][j]
です。a[i][j]
または、 ?を付けて直接出力します。
go - リフレクトフィールドを使用するアドレスを取得するには?
a.twoのアドレスを取得しました。
リフレクトフィールドを使用するために同じアドレスを取得したい。
UnsafeAddr、Addr、...を呼び出そうとしましたが、期待値を取得できませんでした。
c - ポインターの配列にアドレスを追加する C
ポインターの配列の末尾にアドレスを追加する関数を作成する必要があります。これが私がやったことです。私が正しかったかどうかを知りたいのですが、そうでない場合は修正してください。