問題タブ [unsafe]

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 投票する
4 に答える
790 参照

c# - 管理されていない構造体で使用された場合の固定ステートメントのオーバーヘッドはどれくらいですか?

特に、私は次のようなシナリオを考えています。

管理されていないメモリに格納されているFooを想定して、GetMyAddrの固定ステートメントの評価に何が関係しているかを把握しようとしています。私はプログラマーとして、この構造体がマネージヒープ上にないことを知っています。最も効率的な方法で、アンマネージメモリ内のアドレスを取得する必要があります。ここで使用されているロック操作や不可分操作があると、完全に不適切になるので、特に心配です。

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

c# - 安全でないコードとstackallocで修正を使用するかどうかの混乱

以下に、コメントアウトされた1行のコードブロックがあります。メソッドで行われることCreateArrayは、コメント化された行が行うことと同じです。私の質問は、行がコメントされていないときになぜそれが機能するのにb->ArrayItems = d、コメントアウトされたときにゴミを返すのですか?すべての情報が管理されていないため、何も「修正」する必要はないと思います。この仮定は間違っていますか?

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

c# - 安全でない C# - 最小メモリ アドレスでポインタをインスタンス化し、上書きする

(安全でない) C# を使用して任意のメモリ アドレス (最も低いアドレスはどれですか?) を使用してポインタをインスタンス化し、PC がクラッシュするまで連続したランダム データでメモリを上書きし始めることは可能ですか?

誰かが私に例を教えてもらえますか?

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

c# - 関数C++からC#(安全なコード)

c ++:

c#:?

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

c# - 安全でない C# コードは、x86 プラットフォーム用にビルドしない限り、64 ビット プラットフォームでヒープの破損を引き起こす

安全でないコードを使用してファイルのバージョン情報を取得する単純なユーティリティがあります。これを混合プラットフォーム (vs2008/.net 3.5) としてコンパイルし、64 ビット マシンに展開すると、ヒープ破損エラーが発生します。x86として再コンパイルすると、すべてが機能します....

.NET Common Type System を理解していた私にとって、これは驚くべきことでした。私の安全でないコードは、short へのポインタと byte へのポインタを使用しています。これらの一般的なタイプは、CTS のためにどのプラットフォームでも同じサイズですか? ここで何が欠けていますか

すべてのゾンビのキラーに感謝し、ゾンビの黙示録を待っています....... -ジョナサン

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

c# - MMORPGエミュレーターでポインターを使用する必要がありますか?

私はMMORPGエミュレーターを持っています。これは、パケットをかなり処理することを意味します。現在、私はこれにポインターを使用しています。正しく使用するとサーバーの速度を上げることができると思いますが、2人の友人がいます。1人はポインターを使用するように言っています。彼は問題なく使用できると考えています。他の友達は、ポインターを使用しないでください。サーバーがクラッシュする可能性があり、安全ではなく、管理も簡単ではないためです。

パケット構造体に構造体を使用しているので、たとえば次の行を使用してその型を取得できます。Ptr-> Type;

どう思いますか?

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

c# - C# で byte* のコレクションを初期化する

私の安全でないメソッドは、コレクションbyte[]s を受け入れます。これらbyte[]の はすべて同じサイズです。

特定のパターンを探して、それらすべてを反復処理する必要があります。検索は本質的に再解釈キャスト スタイルです。各オフセットで、値を float、double、short、int などであるかのように考慮する必要がありますbyte*byte[]自然なアプローチのように。

byte*残念ながら、コレクションを作成する方法、またはより具体的には、配列のコレクションから初期化する方法が見つかりません。何か案は?

これは、タスクのやや不自然なバージョンです。

基本的に問題は、GC が配列を移動しないように配列を固定しながらpointers、 のアドレスで初期化する方法です。arrays

0 投票する
4 に答える
4381 参照

c# - System.Decimal から System.Guid への変換

キーが 10 進数である大きな辞書がありますが、System.Decimal の GetHashCode() はひどく悪いです。私の推測を証明するために、100.000 個の隣接小数を使用して for ループを実行し、分布を確認しました。100.000 の異なる 10 進数は、2 つ (2 つ!!!) の異なるハッシュコードのみを使用しました。

10 進数は 16 バイトで表されます。ギドそっくり!しかし、Guid の GetHashCode() ディストリビューションはかなり優れています。できるだけ安くC#で小数をGuidに変換するにはどうすればよいですか? アンセーフコードもOK!


編集: テストが要求されたので、コードは次のとおりです。

これは 7 を出力します。2 になった最初の 10 進数を覚えていません。

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

multithreading - Perl スレッドと安全でないシグナル

そのため、最近、Perl プログラムの 1 つをスレッド化して速度を上げたいと考えました。Web サイトのリストを取得して、各 URL のスレッドを開始し、各 Web サイトのコンテンツを取得してから、ページで会社の説明を探したいと考えました。1 つのスレッドが結果を見つけた場合、またはすべてのスレッドが結果を見つけなかった場合、私は終了し、結果を書き、次の会社の URL を読みたいと思いました。

私が見ている問題は、スレッドを作成するときに呼び出す関数内で Perl::Unsafe::Signals モジュールを使用していることです。「スタック」する正規表現を中断するには、安全でないシグナルが必要です。ただし、これは主にプログラムのクラッシュとエラーメッセージ「アラームクロック」の表示など、あらゆる種類の問題を引き起こすようです。

したがって、Perl::Unsafe::Signals とスレッドを安全に使用する方法はありますか? 関数にシグナルを送信することにより、別の方法で正規表現をタイムアウトにする方法はありますか (以下の「KILL」シグナルを送信するなど)。ありがとうございます。

注: 関連するすべての部分にコードを削除しました。さらに必要な場合はお知らせください。

#######スレッド作成によって呼び出されるサブルーチン
0 投票する
1 に答える
544 参照

c# - バイト配列を構造体の配列として再解釈する

理想的にはコピーせずに、blittable 構造体の配列として再解釈したいバイト配列があります。安全でないコードを使用しても問題ありません。バイト数と、最後に取得したい構造体の数を知っています。