[過去ログ]
ゲームプログラミング相談室 (986レス)
ゲームプログラミング相談室 http://game.5ch.net/test/read.cgi/gamedev/1005040025/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
800: 名前は開発中のものです。 [sage] 02/10/27 10:53 ID:??? >>798 一種のキャッシュだよ。まっとーなメモリ保護のある環境下で OS を呼び出して メモリを割り当ててもらうのは ソフトウェア割り込みによる特権モード変更 割り込みハンドラでのレジスタの待避などの定型処理 (ここで OS のメモリ割り当て関係のコードに入って) 各種制限のチェック(たとえばユーザあたりのメモリ割り当て越えてないか、 とか) 仮想記憶のページテーブル、TLB の変更 OS の持つ仮想記憶レイヤーにおけるページエントリの変更 と、いろいろ手間がかかる。ユーザ空間で完結できれば、それに越したことはな い。 このあたりは使ってるライブラリによっても変わってくるけど、昔の UNIX だと 一度 malloc したら二度と OS には返さないのが一般的で、最近でも条件 (*1) が揃わない限りはまず返さない。 本当に OS からメモリを短時間・大量に借りたいなら malloc/free なんか使っ ちゃダメです。mmap() とか VirtualAlloc() とか使いましょう。 (*1) ヒープの端っこが free() されるとか、ページ単位で連続した空間が free される とか。この条件を緩くして OS 側に返すチャンスを増やそうとすればするほど、 malloc/free が内部で管理・チェックするデータが増え、割り当て・解放に掛か る時間もメモリ消費も大きくなるというトレードオフがある。 たとえば Solaris だと libc, libmalloc, libmapalloc あたりに実装が異なる malloc/free がいくつかあるから、ソースを眺めながら処理速度を比べてみると 勉強になるよ。 http://game.5ch.net/test/read.cgi/gamedev/1005040025/800
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 186 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s