問題タブ [pointers]
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++ - C++のポインタ変数と参照変数の違いは何ですか?
参照はシンタックス シュガーであることはわかっているので、コードは読みやすく、書きやすくなっています。
しかし、ポインター変数と参照変数の違いは何でしょうか?
c# - C#のCポインター
これはC#での関数宣言ですか?
Cのこれと同じ:
つまり、C#では、呼び出された関数はバックグラウンドでポインターを受け取りますか?
c++ - スマート ポインターが原因のメモリ リークを見つける
スマートポインタによって引き起こされるメモリリークを発見する「テクニック」を知っている人はいますか? 私は現在、C++で書かれた大規模なプロジェクトに取り組んでおり、参照カウントを伴うスマート ポインターを多用しています。明らかに、コードのどこかでまだ参照されているスマート ポインターによって引き起こされるメモリ リークがいくつかあるため、それらのメモリは解放されません。「不必要な」参照を含むコード行を見つけるのは非常に困難です。これにより、対応するオブジェクトが解放されなくなります (ただし、それはもはや役に立ちません)。
Web で、参照カウンターのインクリメント/デクリメント操作のコール スタックを収集することを提案するアドバイスを見つけました。これにより、どのコードが参照カウンターの増加または減少を引き起こしたのか、良いヒントが得られます。
しかし、私が必要としているのは、対応する「呼び出しスタックの増加/減少」をグループ化するある種のアルゴリズムです。これらのコール スタックのペアを削除した後、(少なくとも) 1 つの「コール スタックの増加」が残っていることを願っています。これで、リークを修正することは大したことではなくなります。
しかし、グループ化を行う「アルゴリズム」のアイデアはありますか?
開発はWindows XPで行われます。
(私が説明しようとしたことを誰かが理解してくれることを願っています...)
編集: 循環参照によるリークについて話しています。
c++ - 別の種類のポインタを介してバッファを削除しますか?
次のC++があるとします。
これはC++標準に従って安全ですか?にキャストバックしてからchar*
使用する必要がありますdelete[]
か?デストラクタのないプレーンな通常のデータであるため、ほとんどのC++コンパイラで機能することを私は知っています。安全であることが保証されていますか?
c++ - C ++での複数の間接参照はどのような用途に使用されますか?
Foo **
どのような状況で、C ++で複数の間接参照(つまり、のようなポインターのチェーン)を使用したいですか?
c - C で 'char**' を 'const char* const*' に変換できないのはなぜですか?
次のコード スニペットは (正しく) C で警告を出し、C++ でエラーを出します (それぞれ gcc と g++ を使用し、バージョン 3.4.5 と 4.2.1 でテストされています; MSVC は気にしないようです):
私はこれを理解し、受け入れることができます。この問題に対する C++ の解決策は、b を const char * const * に変更することです。これにより、ポインターの再割り当てが禁止され、const-correctness ( C++ FAQ
)
を回避できなくなります。
ただし、純粋な C では、(const char * const * を使用して) 修正されたバージョンでも警告が表示され、その理由がわかりません。キャストを使わずにこれを回避する方法はありますか?
明確にするために:
1)なぜこれはCで警告を生成するのですか?これは完全に const セーフである必要があり、C++ コンパイラはそれをそのように認識しているようです。
2) この char** をパラメーターとして受け入れ、それが指す文字を変更しないと言いながら (そしてコンパイラーに強制させる) 正しい方法は何ですか? たとえば、関数を書きたい場合:
そして、char** でそれを呼び出したかったのですが、パラメーターの正しい型は何でしょうか?
c - ポインタと参照の本当の違いは何ですか?
別名 - ポインターに対するこの強迫観念は何ですか?
ActionScript、Java、C# などの最新のオブジェクト指向言語しか実際に使用していないので、ポインターの重要性とポインターの使用目的がよくわかりません。ここで何が欠けていますか?
c++ - C++ ではポインターとクラスを把握できません
私は大学を卒業したばかりで、しばらくの間 C++ で作業しています。私は C++ の基本をすべて理解して使用していますが、ポインターやクラスなどのより高度なトピックを理解するのに苦労しています。私はいくつかの本やチュートリアルを読み、それらの例を理解しましたが、高度な実際の例を見ると、それらを理解できません。C++プログラミングを次のレベルに引き上げるのを妨げているような気がするので、これは私を殺しています。他の誰かがこの問題を抱えていましたか?もしそうなら、どのようにそれを突破しましたか?ポインターとクラスの概念を実際によく説明している本やチュートリアルを知っている人はいますか? または、高度なポインターとクラス手法を使用した適切な説明コメント付きのサンプル コードですか? どんな助けでも大歓迎です。
pointers - MIPS アセンブリ ポインタからポインタへ?
このケースの処理方法はわかっていると思いますが、それが正しいことを確認したいだけです。次の C コードがあるとします。
P には、別のアドレスを持つメモリ内の場所を指すアドレスが含まれています。2 番目の住所を変更したいのですが。したがって、MIPS コードは次のようになります。
それはあなたがそれをする方法ですか?
c - 関数呼び出し内のMallocは、戻り時に解放されているように見えますか?
私はそれを最も基本的なケースに落とし込んだと思います:
出力は次のとおりです。
私の理解がどこで失敗しているのかを誰かが明らかにすることができれば、それは大いにありがたいです。