5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

ゲームプログラムなら俺に聞け11

1 :デフォルトの名無しさん:2010/09/23(木) 02:30:40
ゲーム開発に関してプログラムの観点からアプローチするスレッドです。
一応質問も受け付けます。
ソースをうpするとアドバイスがもらえるかもしれません。
なお、このスレの内容は鵜呑みにしないこと。

【前スレ】
ゲームプログラムなら俺に聞け10
http://hibari.2ch.net/test/read.cgi/tech/1284022314/

429 :デフォルトの名無しさん:2010/09/28(火) 06:49:42
また10年前にタイムスリップしてるな、このスレ。
ゲームプログラマあがりのおじいちゃんが住み着いてるような気がする。

まずページングが有効な環境では、大きくても数 KB の C++ オブジェクトの
new がフラグメンテーションの影響で失敗するなんて事はありえない。
普通に new/delete しとけばいい。 Windows/Linux など OS の載ってる
環境ではページングが有効。・・・なはずなんだけど、稀に時代錯誤な
おじいちゃんが最初に一括確保するうんこアロケータを強要してきて
ページングの恩恵を台無しにしようとするから注意が必要。

ページングが使えない環境でも、数十 KB の画像データなんかを RAM に
ロードするような環境ではどうやってもそっちが先にひっかかるんで、
C++ オブジェクトの new がフラグメンテーションの影響で失敗する状況は
かなり稀になる。・・・はずなんだけど、稀に時代錯誤なおじいちゃんが
自前で書き起こしたフラグメンテーション耐性の無いうんこアロケータを
強要してきて数バイトの確保も致命的問題につながってしまうことがあるので
注意が必要。

つづく

430 :デフォルトの名無しさん:2010/09/28(火) 06:50:22
つづき

もっとタイトな環境では、 C++ オブジェクトの new が
フラグメンテーションの影響で失敗する可能性がわりとあると思う。上記の
環境も含めて、そういった問題が見つかった場合はメモリをプールしておく
などの対策をとる。ただし対策は局所的でいい。タイトな環境では似たような
対策がたくさん入ることになる。昔のゲーム機でのプログラムがこの状態に
なることが多かったんで、おじいちゃんは今のプログラムにそういった
対策が見られないのを心配してくれてるんじゃないかと思う。

とまぁ、フラグメンテーションが実際に発生している状況を確認する前から
ソースコードレベルの対策( new/delete 禁止とか)を取るのはほとんど無駄。
「割り算よりシフトが速いよ」とか言ってソースの可読性を劣化させるのと
同じ方向の間違い。

184 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)