タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

メモリとrustに関するdelegateのブックマーク (2)

  • Rustのメモリ管理機能とその特徴

    初出:技術評論社刊「ソフトウェアデザイン 2021年9月号」 先日、技術評論社よりRustのメモリ管理機能についての特集に寄稿させて頂きました。 この記事は自分が寄稿させていただいた記事をブログ用に一部推敲・加筆を加えたものです。 なお、ソフトウェアデザインでの特集ではより実践的な例でのメモリ管理についての解説もあるので、興味のある方は誌のほうも手にとっていただければと思います。 プログラム言語におけるメモリ管理の課題プログラミングにおける課題の一つとしてどうやってメモリ領域(ヒープ領域)を管理するかというものがあります。 C言語ではmalloc/free関数などを用いて手動でメモリを管理しています。 これらの関数はメモリアドレスを示すポインタを介してメモリ管理を行います。 malloc関数は必要なメモリ領域を確保してその先頭番地のポインタを返し、プログラム内ではその番地のメモリを読み書

  • メモリをダンプしてRustのsliceとVecを理解する - 逆さまにした

    タイトルの通りなんですが、RustのsliceやVecがしっくり来ていないので、メモリ上でどのように表現されているのかという観点で理解を深めようと思います。 環境 ❯ cargo version cargo 1.32.0 ❯ rustc --version rustc 1.33.0 また今回の環境ではusizeは8バイト長です。 println!("size of usize: {}", std::mem::size_of::<usize>()); // size of usize: 8 事前準備 メモリ上でどのように表現されているか確認するため、RustのSizedとfatポインタ - 簡潔なQのas_raw_bytesを利用します。 引数xを*const Tでキャストして、生ポインタからstd::mem::size_of_val(x)で得たバイト長を読み出します。 fn as_raw_

    メモリをダンプしてRustのsliceとVecを理解する - 逆さまにした
  • 1