[過去ログ] ゲームプログラミング相談室 (986レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
361
(4): 02/02/07 15:26 ID:??? AAS
外部リンク[html]:www.hh.iij4u.or.jp
を参考にしてC++でタスクを使っています。新しいタスクを作るときに
Cならば
TCB* t = task_make(pri,func)のようにすれば、
task_makeの実装によってあらかじめmallocしておいたヒープを渡せますが、
C++では
TCB_HOGE* t = new TCB_HOGE(パラメータ);
省4
363
(1): 02/02/07 20:36 ID:??? AAS
>>361
1. placement new を使う
2. operator new を定義して、自前でメモリ管理をする

あと STL 使っている場合テンプレートパラメタで渡す allocator にも手を入れないと、
完全にはメモリを管理下にはおけない。ただ、そこまでやる意味があるかというと、
俺は無いと思う。

(仕事でメモリの制限が厳しいハードを対象にプログラミングしてる場合を除く)
364
(1): 02/02/07 22:46 ID:??? AAS
>>361
そもそも C++ なら、タスク用の構造体を用意せずに

struct Task {
  virtual void Update(unsgned tick) = 0;
};

とでもインターフェースを用意してやって、Task を継承したクラスを、自機/弾/敵機
など必要なだけ用意。あとはメインループの中で
省15
366
(1): 361 02/02/08 13:50 ID:??? AAS
お答えしてくれてありがとうございました。
>>363
operator new はクラスごとに書かなくちゃいけないのかな?
とりあえず何回もnewされるクラスに使ってみて、パフォーマンス
を比べてから、効果が大きいようであれば他のクラスにも使ってみます。
>>364
うう、関数オブジェクトだとかそこら辺は勉強してないのであまりわからないです
省2
375
(1): 02/02/16 14:06 ID:??? AAS
>>361,366
ワシも同じページ見ながらC++でタスク作ったことがある。
そんときは363と全く同じやり方に行き着いたよ。
メモリ管理は手を抜いて固定サイズメモリ領域の配列に
したけど。

いちいち各クラスのoperatow newを用意する必要はなくて、
タスク基底クラスのoperator newだけ自前で用意して、継承
省6
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s