タグ

memoryとcに関するtyruのブックマーク (10)

  • malloc The 67th kernel reading party - Google Video

    The 67th kernel reading party - 1:39:31 - Sep 24, 2006 Yokohama Linux Users Group - www.ylug.jp/ ()  Rate: glibc malloc Download video - iPod/PSP |  Embed video Download is starting. Save file to your computer. If the download does not start automatically, right-click this link and choose "Save As". How to get videos onto the iPod or PSP. <embed id="VideoPlayback" src="http://video.google.com/goog

  • malloc() が返すアドレスの下位数ビットは常に0って知ってます?

    当は「malloc() が返すアドレスは8の倍数って知ってます?」 にしたかったんだけど,「8」というのは CPU 依存の数字だし, 一般には2の冪乗なのでこういうタイトルにした. そもそもこの記事を書くきっかけは, YLUG の 「第67回カーネル読書会 (glibc malloc について)」の ビデオと資料を見たこと. 1985年頃に Lisp の処理系を作ろうとして (結局作らなかったけど(^^;)) メモリ管理方法について色々考えたアイディアと同じものもいくつか出てきて, 懐かしくもあり,またとても面白かったが, 私にとって目新しいアイディアは少なかった. malloc() の内部実装に興味を持つ人であっても, 意外と上記タイトルに書いた事実を知らない人が多いようなので, 「ビデオと資料」のページに色々とコメントした. この記事はそれを整理してまとめたものである. 2016/0

  • K&R malloc/free作ってみた - I am Cruby!

    movieK&R malloc/free作ってみた - narihiro.info(動画)新山さんの動画があまりにも面白くてマネしました。

    tyru
    tyru 2010/04/26
  • malloc(0)の話 - Hello, world! - s21g

    malloc(0)の戻り値は、NULLもしくはサイズが0のメモリ領域へのポインタのいずれかとなっています。どちらが帰ってくるかは処理系に依存するので、一見malloc(0)を使うとプログラムの移植性を損なうような気がします。 しかし、mallocで確保された領域を realloc や free で操作する場合、reallocもfreeもいずれも、サイズが0のメモリ領域へのポインタに対する操作とNULLポインタに対する操作を許容するので、実際には問題ありません。

    tyru
    tyru 2009/11/24
  • glibcの脆弱性で大量のメモリが割り当てられる – セキュリティ専門家は基盤ソフトウェアに期待させてはならない

    (Last Updated On: 2016年2月18日)最近この種のエントリがありませんでしたが、個人的に面白いとセキュリティ系の話題はできるだけ書いていきたいと思っています。 glibcのstrfmon関数の実装に脆弱性があり、簡単なスクリプトで大量のメモリが割り当てられる脆弱性があるようです。影響するglibcは2.10.1以下なので影響範囲は非常に大きいです。 最初はBSDのlibcで脆弱性が発見され、glibcでも影響があることは脆弱性の発見者には分かっていたようです。詳細はアドバイザリに記載されています。 http://packetstormsecurity.org/0909-advisories/glibc-format.txt 参考:セキュアプログラミングの7つ習慣 詳しい説明はアドバイザリを読んで頂くとして、当初はBSD系OSのglibcで問題が発見されたそうです。Net

  • CとC++の動的メモリー管理(1)、malloc関数とnew演算子の違いを知る | EE Times Japan

    C言語とC++言語では、動的にメモリーを確保したり解放したりする手法は異なり、それぞれ長所と短所がある。もちろん、安全性を最重要視する組み込み機器では、動的に確保したメモリーを利用すべきでないという考え方には心から賛同する。リスクが利点を上回ってしまうからだ。しかし場合によっては、動的なメモリーを適切に管理することで改善できることも多いのではないかとも考えている。 C言語やC++言語に標準的に用意されているメモリー管理向け関数の動作が意図した通りでない場合は、メモリー管理関数を独自に開発するとよい。独自のメモリー管理関数の仕様と振る舞いは、できる限り標準関数と同じにすることが理想である。標準関数のメモリー管理方法と違ってしまう場合でも、関数の引数と返り値の数と型は、可能な限り標準関数にそろえるべきである。関数の仕様を同一にしておくことで、最初は標準のメモリー管理関数を使って開発し、必要に応

    tyru
    tyru 2009/09/04
  • malloc関数の使い終わった後の開放について

    malloc()はOSからメモリを借用するのではなく、malloc()用に確保された大きなメモリブロックから、要求されたサイズの小さなメモリブロックを切り出す関数です。 free()は「小さなメモリブロックを再利用可能な状態にする」という関数でOSに対して何か影響があるような関数ではありません。 プログラムが終了するとき、malloc()用に確保してある大きなメモリブロックは全て適切に処理されます(どう処理されるかは処理系依存です)。 よって、プログラム終了のときはmalloc()済み、malloc()待ちに関わらずゴミのメモリブロックは残りません。 これはANSI-Cのライブラリ仕様ですからmalloc(),realloc,calloc()とfree()の関連でのみ成立します。 その他のメモリ関連関数/APIでは、プログラム終了時に断片化されたメモリブロックが起こってしまう可能生がありま

    malloc関数の使い終わった後の開放について
    tyru
    tyru 2009/09/01
  • Manpage of MMAP

    Section: Linux Programmer's Manual (2) Updated: 2008-06-05 Index JM Home Page roff page 名前 mmap, munmap - ファイルやデバイスをメモリにマップ/アンマップする 書式 #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); int munmap(void *addr, size_t length); 説明 mmap() は、新しいマッピングを呼び出し元プロセスの仮想アドレス空間に作成する。 新しいマッピングの開始アドレスは addr で指定される。マッピングの長さは length 引き数で指定される。 addr が NULL の場合、カーネ

  • コンピューター:C言語講座:mmapについて

    コンピューター:C言語講座:mmapについて 概要 mmapはファイルをメモリにマッピングするものです。わかりやすく言うと、UNIXのOSが行なっているページングやスワッピングを自プロセスで行なうようなものです。 これを使うメリットとしては、メモリ確保サイズが確保開始時に決定できない場合、簡単にはmalloc()で適当な量を確保し、足りなければrealloc()を使用して拡大することになりますが、realloc()を繰り返すとメモリ領域中に空きが出来やすく、大規模なシステムでは実際使用しているメモリより空き空間の方が数倍大きくなってしまい、メモリ不足で実行不可能になる場合があります。mmapを使用すれば、別々に拡大していくような管理が可能なので、また、スワップスペースとは別の位置に置くことにより、多数の動的メモリを必要とする場合に安全に動作することが可能になる場合があります。ただし、基

  • メモリ管理

    プログラムはデータです。データを実際に解析(解釈)してみて始めて命令コー ドか単なるデータかわかります。プログラムを起動するというのは、プログラ ムファイルを解析しながらメモリの中に並べ、並べ終ったら、開始位置(Entry Point)と言いますから、命令を CPU に送り込み始めることです。 CPU は命令をメモリから順に呼んで、それを解釈して動きます。 メモリの中にプログラムがどういう風に並ぶかを理解しましょう。 プログラムの中には命令と変数があります。どちらも単なるビットの並びです。 区別は尽きません。だから分離して並べます。命令が並ぶ区画(セグメント) と変数が並ぶ区画があります。 変数には種類があります。これはどの区画に置かれて、どう管理されるかが違 うからです。変数が置かれる区画はさらに小さな区画に区分けされているとい うことです。スタック、ヒープ、グローバル(スタティックも同

  • 1