問題タブ [unsafe-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.

0 投票する
1 に答える
1719 参照

c++ - カスタム弱/強参照ポインター

弱い/強い参照ポインター関係の独自の実装を作成していますが、構成に混乱しています。強い参照を含むクラスがあり、弱い参照を持つ別のクラスに強いポインターを設定したい場合、weak_ref ポインターのポインターを渡す必要がありますか?

誰かがこのコードを見て、感謝することを知らせてください。また、他の問題に気付いた場合はお知らせください。このページが煩雑にならないように、3 つのファイルを codepad ファイルに入れました。

WeakReference.h : http://codepad.org/nNtRk4vO

StrongReference.h : http://codepad.org/MGi0fZ4J

これを「boost を使用、std を使用、tr1 を使用」という引数に変えないでください。他のものを使用するのではなく、このコードに関するヘルプを探しています。

0 投票する
1 に答える
7038 参照

c++ - 弱い参照ポインターと強い参照ポインターの関係

私は自分の弱い/強いポインタを書こうとしていますが、その関係を明確に理解していません. 私が遭遇したように見えるすべてがそれを明確にするわけではなく、あるドキュメントが別のドキュメントの言うことを矛盾させることがよくあります. おそらく画像やコードサンプルも含めて、弱いポインタと強いポインタの関係を詳細に説明してもらえますか?

(「boostを使え」「tr1を使え」などとだけ言わないでください。これは宿題ではありません。学びたいです)。

0 投票する
3 に答える
240 参照

c# - C# でパラメーターとして配列セクションへのポインターを渡す

私はちょうどニューラルネットワークを学んでおり、ニューロンのコンストラクターが染色体になる配列内のセクションへのポインターを受け取るようにしたいと考えています。このようなもの:

したがって、次のようなものでニューロンを作成します。

C#でこれを行うことは可能ですか? C# が安全でないコードをサポートしていることは知っています。public Neuron(int* chromosomeSection)しかし、行が安全でないことをコンパイラに伝える方法がわかりません。

また、C++ または C で行うすべての操作を行うことができますか? この方法で作業を開始する前に、知っておくべき落とし穴はありますか? これまで C# で安全でないコードを扱ったことはありません。

0 投票する
2 に答える
2317 参照

c# - 安全でないポインタの反復とビットマップ-なぜUInt64の方が速いのですか?

私はいくつかの安全でないビットマップ操作を行ってきましたが、ポインターを増やす回数を減らすと、パフォーマンスが大幅に向上する可能性があることがわかりました。なぜそうなのかはわかりませんが、ループ内でより多くのビット単位の演算を実行する場合でも、ポインターに対して実行する反復回数を減らす方がよいでしょう。

したがって、たとえば、UInt32で32ビットピクセルを反復する代わりに、UInt64で2ピクセルを反復し、1サイクルで2回の操作を実行します。

以下は、2つのピクセルを読み取り、それらを変更することによってそれを行います(もちろん、奇数幅の画像では失敗しますが、テスト用です)。

次のコードはピクセルごとに実行し、前のコードよりも約70%遅くなります。

誰かがポインタをインクリメントすることが、いくつかのビット演算を実行するよりもコストのかかる操作である理由を明確にできますか?

.NET4フレームワークを使用しています。

このようなことがC++にも当てはまりますか?

NB。32ビットと64ビットの2つの方法の比率は同じですが、どちらの方法も64ビットと32ビットで20%遅くなりますか?

編集:Porgesとarulが示唆しているように、これはメモリ読み取り数の減少と分岐オーバーヘッドが原因である可能性があります。

EDIT2:

いくつかのテストの後、メモリからの読み取りにかかる時間が短縮されたことが答えのようです。

このコードでは、画像の幅が5で割り切れると仮定すると、400%速くなります。

次に、これを使用します。

0 投票する
1 に答える
763 参照

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.

0 投票する
2 に答える
686 参照

java - JavaでUnsafeを使用してメモリを書き込み/読み取ります

jvm内のUnsafeクラスを使用することで、メモリへの直接の書き込みと読み取りが可能であることを私は知っています。

これが本当に危険で、どういうわけか逆効果であることは別として、私は代わりに、許可されたメモリ位置の境界をチェックするのは誰/何が担当しているのか疑問に思いました。また、すでに割り当てられているメモリが上書きされるのを防ぐメカニズムがある場合も同様です。この最新の質問に関連して、彼がすべきでないことを上書きすることによって、どのような損害を与えることができますか?さて、これは次のように最もよく改革することができます:どのタイプのメモリが書き込むことができるか、またはどのような種類の情報がすでにそこに保存されていますか?

ありがとう

0 投票する
3 に答える
23152 参照

c# - 配列の最初のエントリへのポインタを取得する

配列の最初のエントリのポインタを取得したい。これが私が試した方法です

次のコンパイルエラーを取得します。それを修正する方法はありますか?

固定ステートメント初期化子内の非固定式のアドレスのみを取得できます

0 投票する
1 に答える
170 参照

c# - UInt64 を構造体として再解釈する

私のコードでは、UInt64 値を計算してから、次のようにキャストしています。

セルは構造体です。Marshal.SizeOf(new Cell()) は 8 を出力するため、UInt64 と一致するはずですが、上記のキャストは AccessViolationException でクラッシュします。おそらく Marshal.StructureToPtr などのより安全な方法を試すことができますが、コードのどこにエラーがあるのだろうか? たぶん、アライメントの不一致の問題ですか?

0 投票する
1 に答える
160 参照

c# - このコードを改善して安全に使用するにはどうすればよいですか?

私はこのコードを取り上げましたが、使用するのは危険なコードであり、WP7 では使用できない可能性があることを理解しています。おそらくtry/catchを使用して、このコードを安全に使用できるようにする方法について誰かが考えていますか?

0 投票する
1 に答える
3360 参照

pointers - Go で **T を *unsafe.Pointer に変換する

タイプの変数を に変換するにはどうすればよい**Tです*unsafe.Pointerか?

以下の例では、コンパイル エラーが発生します。

&ptr (タイプ **s) をタイプ *unsafe.Pointer に変換できません

に切り替える(*unsafe.Pointer)(&ptr)&unsafe.Pointer(ptr)、次のコンパイル エラーが発生します。

unsafe.Pointer(ptr) のアドレスを取得できません

Ps。sync/atomic実際にそのような変換を行う必要がある状況の 1 つであるため、例を作成することにしました。

編集

間違った解決策の 1 つは、一時変数を使用することです。

コンパイル中、CAS は に格納されているものだけを交換し、 に格納されupていないものを交換しptrます。zeebo@#go-nuts が指摘したように、これは望ましい結果ではありません。