タグ付けされた質問 「unsafe」

16
なぜsun.misc.Unsafeが存在し、それを現実の世界でどのように使用できるのですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 この質問を改善する 先日、sun.misc.Unsafeパッケージに遭遇し、それができることには驚いていました。 もちろん、クラスは文書化されていませんが、それを使用する正当な理由があるかどうか疑問に思っていました。それを使用する必要がある場合、どのようなシナリオが発生する可能性がありますか?実際のシナリオではどのように使用するのでしょうか? さらに、あなたがいる場合か、それを必要とし、その何かがおそらくあなたのデザインに問題があることを示すものではありませんか? Javaにこのクラスが含まれているのはなぜですか?
267 java  unsafe 



1
unsafeDupablePerformIOとaccursedUnutterablePerformIOの違いは何ですか?
私はハスケル図書館の制限付きセクションをさまよっていて、次の2つの卑劣な呪文を見つけました。 {- System.IO.Unsafe -} unsafeDupablePerformIO :: IO a -> a unsafeDupablePerformIO (IO m) = case runRW# m of (# _, a #) -> a {- Data.ByteString.Internal -} accursedUnutterablePerformIO :: IO a -> a accursedUnutterablePerformIO (IO m) = case m realWorld# of (# _, r #) -> r 実際の違いは、ちょうど間のようですrunRW#し、($ realWorld#)しかし、。私は彼らが何をしているのかについていくつかの基本的な考えを持っていますが、私はそれらを重ねて使用することの本当の結果は得ていません。誰かが違いを教えてくれませんか?

1
std :: ptr :: writeは、書き込むバイトの「初期化されていない状態」を転送しますか?
FFIの境界を越えてポインターサイズのintに収まるトランザクション型を支援するライブラリを開発しています。次のような構造体があるとします。 use std::mem::{size_of, align_of}; struct PaddingDemo { data: u8, force_pad: [usize; 0] } assert_eq!(size_of::<PaddingDemo>(), size_of::<usize>()); assert_eq!(align_of::<PaddingDemo>(), align_of::<usize>()); この構造体には、1データバイトと7パディングバイトがあります。この構造体のインスタンスをaにパックしusize、FFI境界の反対側でアンパックします。このライブラリーは汎用なので、私はMaybeUninitand を使用していptr::writeます: use std::ptr; use std::mem::MaybeUninit; let data = PaddingDemo { data: 12, force_pad: [] }; // In order to ensure all the bytes are initialized, // zero-initialize the buffer let mut packed: …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.