トップページgamedev
1001コメント329KB

C/C++ゲーム製作総合スレッド Part5

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/01/16(木) 00:00:31.27ID:w6WW3hAo
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その17
http://toro.2ch.net/test/read.cgi/gamedev/1383795645/

前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
http://toro.2ch.net/test/read.cgi/gamedev/1376262450/
0052名前は開発中のものです。2014/01/22(水) 21:54:50.35ID:y74k/mSd
まあマルチスレッドで面倒なのはデバッグだし
0053名前は開発中のものです。2014/01/22(水) 23:46:51.66ID:FwnXEaYs
特殊なゲームを除いて、ロジックのマルチスレッド化はやめたほうがいいね

OpenMPとかも保守性を落とすわりには、バッファコピーとかくだらない
並列化しかできないし、積極的にスレッド化してもリスクの方が多い

>>51
Direct3D10以降に出てきたマルチスレッド対応も
結局内部でクリティカルセクションやってるだけだろうから、
だったらswingみたいにシングルスレッドモデルやるほうが無難だと思う
0054名前は開発中のものです。2014/01/23(木) 00:01:05.67ID:9bErv8vs
マルチスレッドはねぇ…
低クロック動作省エネこそ正義の非力な組込システムとかなら
仕方なく中〜細粒度並列の形で書いたりもするけれど
ほら、パソコンってアメ車のマッスルカーじゃないですか

CPUリソース、余るんですよね。湯水の如く

なので>>50の言うように粗い粒度でなら取り入れるけど
ゲームの中核部、シミュレーション部については古式ゆかしい
シングルスレッド前提の簡潔なスタイルでラクチンです
0055名前は開発中のものです。2014/01/23(木) 00:58:45.53ID:XQzipMrB
前スレでゲームのメインフレーム部にマルチスレッドを使ってた奴がいたが、今日は来てないのか
あるいは他スレだったかな?
0056名前は開発中のものです。2014/01/23(木) 01:15:55.11ID:f/NLGL86
キャラクターの更新
背景・マップの更新
カメラの更新
これで3つスレッド使える
0057名前は開発中のものです。2014/01/23(木) 01:18:02.56ID:f/NLGL86
メインループと描画のスレッドってわけても意味なくね?

同じデータ参照しちゃいけないなら
一番負荷のかかるキャラクター周り計算が終わってから描画開始しないといけないじゃん
0058名前は開発中のものです。2014/01/23(木) 01:29:07.57ID:y0vYWKn+
描画は軽いけどロジック側がめっちゃ重い場合、
描画側の垂直同期で待つのを避けるためにデータの複製を更新したあとに
スレッド間でデータをコピーorスワップする方法はある
データ用のメモリを2倍も使ったり、対価となるコストも大きいがな

これは広大なマップをもつシムシティのような特殊なゲーム用だね
0059名前は開発中のものです。2014/01/23(木) 01:35:10.24ID:f/NLGL86
ん?広大なマップを持つゲームなら逆にメモリを2倍も使ったら大変なことになるんじゃないのか
0060名前は開発中のものです。2014/01/23(木) 02:21:59.68ID:s/ECi/gl
cpuを倍にするよりメモリを倍にする方が安くて現実的
0061名前は開発中のものです。2014/01/23(木) 02:43:04.45ID:s/ECi/gl
あとそこからもうひと工夫すると実際には+1%くらいで済むかもな
0062名前は開発中のものです。2014/01/23(木) 08:54:48.07ID:o//cFEYQ
マルチスレッドで処理速度を上げるにはダブルバッファリングしてメモリーを隔離して使う事が基本なの?
ややこしいな
0063名前は開発中のものです。2014/01/23(木) 09:00:18.56ID:WQKAVBet
マルチスレッドはCPUの待ち時間を減らして稼動効率を上げる事によって結果的に処理速度を上げるものだからな〜
できるだけセマフォ使う回数が減るようにしないと本末転倒だ。セマフォって本来は要らないモノだし。
0064名前は開発中のものです。2014/01/23(木) 09:37:12.46ID:o//cFEYQ
マルチコアであればマルチスレッドの恩恵は得られるんじゃないの?
0065名前は開発中のものです。2014/01/23(木) 09:44:44.32ID:8rbpDm/C
たとえば3Dモデルのフレームの行列計算を、
マルチスレッドで分散させて計算させるだけでも、
マルチコアの恩恵でかなり効果が出る。
モデルデータことにやれば、データのバッティングしないので管理も容易。

細分化して、親フレームからばらけた子フレームの計算を、
複数のコアに投げてもいいんだろうけど、さすがに面倒くさい。
0066名前は開発中のものです。2014/01/23(木) 09:59:16.39ID:C/RQiWS+
CPUキャッシュをだぶるばっふぁりんぐする技術マダー?
0067名前は開発中のものです。2014/01/23(木) 10:28:58.88ID:aF2XRTqq
>>66
Intel:「せっかく俺様が気を利かせて面倒を肩代わりしてやってんのに…
   最適化をご所望なら弊社謹製の開発ツール群をお買い求め下さい」
0068名前は開発中のものです。2014/01/23(木) 11:25:23.28ID:7+IY4GKU
こうやってどんどん必要スペックが上げられていくんだな……。
0069名前は開発中のものです。2014/01/23(木) 12:09:27.48ID:9AoVHus1
データ並列性さえあればOpenMPで簡単マルチスレッド使えるんだけどな
これ以外ではめんどくてマルチスレッドしないわ
0070名前は開発中のものです。2014/01/23(木) 13:18:55.33ID:8rbpDm/C
OpenMPなんて効果が出ないものを、未だに使っている人間がいることに驚いた。
0071名前は開発中のものです。2014/01/23(木) 14:01:36.18ID:sIh8uNuQ
検討項目を増やさずに問題解決するに越したことはないし、
作業を増やさずに問題解決するに越したことはないし、
コンピュータを使わずに問題解決するに越したことはないし、
プログラムを組まずに問題解決するに越したことはないし、
並列処理を使わずに問題解決するに越したことはない。

上司に嫌がらせしたいんだったら、↑の逆に向かう理論武装に日々怠らなければ良いwww
0072名前は開発中のものです。2014/01/23(木) 14:42:15.40ID:y0vYWKn+
OpenMPが普及しないのはそれなりに理由があるからなんだけど
最新技術みたいな中二ワードで本を売る業者に騙されていりこむ信者もいる

彼らは自分が他人より技術があると信仰している
他の連中は技術がないからOpenMP使えないんだ、ヤレヤレと信仰している
0073名前は開発中のものです。2014/01/23(木) 14:54:35.72ID:o//cFEYQ
実際に計測して確かめろとしか言えん
環境によっても変わるしな
0074名前は開発中のものです。2014/01/23(木) 18:57:57.85ID:B/J3zYBR
うちにあるメインマシンはシングルコアだ
0075名前は開発中のものです。2014/01/23(木) 19:35:48.55ID:XQzipMrB
>>72
計測する技術がないから使えないだけじゃね?
0076名前は開発中のものです。2014/01/23(木) 20:23:20.02ID:y0vYWKn+
OpenMPで小さなバッファのコピーが3倍早くなっても仕方ないわけでw
肝心な箇所のスレッド化は自前でやるんだから変なものは導入しないほうがマシ

Javaとか.Netランタイムは、何もしなくても勝手に
OpenMPでやるような単純なスレッド化ポイントを探して
やってくれるらしいから、そっちに期待したほうがまだ実りがあると思うよ

>>62
処理速度が目的ならあらゆる手段でロックを避けるのが基本
0077名前は開発中のものです。2014/01/23(木) 21:23:37.19ID:AhrZfxvI
http://dixq.net/forum/viewtopic.php?f=3&;t=14532
何でも掲示板が2ch並みの不毛さになってんだがwww
0078名前は開発中のものです。2014/01/23(木) 22:00:13.37ID:f/NLGL86
毎回毎回過去ログ見ない、何も考えない人の質問を謎の義務感があるのか答えさせられてるからな
俺も平穏な頃はお世話になったが代わりにそこの住人の心が荒れてしまった
0079名前は開発中のものです。2014/01/23(木) 22:13:04.53ID:Gy4H0ec+
MTフレームワークのように使えてる奴おるかー?
0080名前は開発中のものです。2014/01/23(木) 22:28:18.98ID:y0vYWKn+
>>77
技能がないではなく知能がないやつが沸くのは初心者系の宿命さ
0081名前は開発中のものです。2014/01/23(木) 22:41:55.18ID:AhrZfxvI
まあ確かに全ての質問の相手をしてたら荒むかもなー
初心者向けじゃ無くせばいいのにw
0082名前は開発中のものです。2014/01/24(金) 00:19:10.71ID:GEmYWJ47
なんでもかんでも馬鹿にするのは良くないよ
ここの住民はその傾向強いけど
0083名前は開発中のものです。2014/01/24(金) 01:13:55.26ID:Jcy2cywV
世の中に悪いものが溢れすぎているんだよ
バッドノウハウを叩き込む本も海外含めて出版されすぎ
パラノイアになるのもしかたあるまい
0084名前は開発中のものです。2014/01/24(金) 01:19:36.77ID:2quQhFog
横文字並べんな
俺にわかるように日本語で喋る
0085名前は開発中のものです。2014/01/24(金) 02:38:13.12ID:75+tl8UC
カタカナ語をやたらとチョイスするメンズはコミュニケーションがノーグッドなのがデフォルトだし
イージーなワードでトーク出来ない事がフーリッシュだとアンダスタンドしてないよね
0086名前は開発中のものです。2014/01/24(金) 04:50:34.13ID:pN9eWABR
カタカナ語はノットユーズだグッドルッキングガイども。
0087名前は開発中のものです。2014/01/24(金) 17:19:24.19ID:Jcy2cywV
初カキコ…ども…

俺みたいな中3でノンブロッキングI/Oしてる野郎、他に、いますかっていねーか、はは

今日のクラスの会話
Boostシリアライズかっこいい とか DXライブラリ とか
ま、それが普通ですわな

かたや俺はデバッグ用のコンソールでカーネル・ウップスを見て、呟くんすわ
it's a 深刻なエラー.狂ってる?それ、ランタイム・エグゼプションね。

好きなFW MTフレームワーク(カプコン社員でもないのに!)
尊敬する人間 ジョエル・スポルスキー(ユダヤ・ジョークはNO)
0088名前は開発中のものです。2014/01/24(金) 17:30:23.22ID:jYeepMxG
さすが中3だ
匿名掲示板で自分の事を勝手に語り始めた
自分が特別な存在であり、周囲より目立って当然であるという厨二病症状が伝わってくる

そんな貴方に対し、先輩として一つ、大人の現実を教えよう
ゲームを作りたければ、プログラミングだけじゃ駄目だ
プログラミングと絵を練習しなさい
音楽が得意なら音楽にも手を付けなさい
絵が描けないまま大人になれば、辿り付く先はゲーム会社のディレクターではなく、過労のIT豚小屋企業だ
さぁ、若者よ、時間が無いぞ
今日からpixivに通うんだ
0089名前は開発中のものです。2014/01/24(金) 17:59:26.14ID:Ak56Y4mX
他の板でやって。お願い
0090名前は開発中のものです。2014/01/24(金) 18:36:58.01ID:z3bTrILf
だが断る
0091名前は開発中のものです。2014/01/24(金) 18:57:08.80ID:8axgouAh
>>87
そこのクラスは構造体とかのクラスにはしないんだ
0092名前は開発中のものです。2014/01/24(金) 18:57:20.98ID:Jcy2cywV
>>88
おめーゲーム作れねーくせに、2chの受け売りで知ったかかましてんじゃねーぞゴラァ!
無能なくせに、先輩風吹かして上から目線の説教する哲学者気取りには反吐がでるぜ!!

http://anago.2ch.net/test/read.cgi/gline/1311577271/l50
0093名前は開発中のものです。2014/01/24(金) 19:00:30.40ID:Jcy2cywV
>>91
あー、見落としたわ
0094名前は開発中のものです。2014/01/25(土) 04:15:46.46ID:8r1nXkC0
>>88
絵って・・・同人じゃないんだから専門の絵描きさんにお願いするだろ普通
0095名前は開発中のものです。2014/01/25(土) 16:31:59.91ID:jy8SNfJb
大手ゲームメーカー管理職の妄想にとりつかれたゲーム爺(無職)
あっちで引き取ってもらおう

ニート、無職、フリーターがゲームを作るスレ6
http://toro.2ch.net/test/read.cgi/gamedev/1389441602/
0096名前は開発中のものです。2014/01/25(土) 20:03:22.14ID:ErNorzVO
勘弁してください
0097名前は開発中のものです。2014/01/25(土) 22:16:45.80ID:ykCYICO9
http://codepad.org/XE9hLg41
これってもしかしてListにAddされたあと
スコープ抜けて寿命付きてListの中なにも残ってなかったりする?
0098名前は開発中のものです。2014/01/25(土) 23:11:32.82ID:jy8SNfJb
いんや。vectorにaddされるのはローカル変数SCache Cache自体ではなく、
vector内でnew SCache()されたものであり、aiueo()ローカル変数SCache Cacheが
新しく生成されたインスタンスに対してコピーコンストラクタでコピーされるはず

だからたぶんコピーコンストラクタをprivateで定義しておくとコンパイルが通らないはずだ
SCache::SCache(const &copy){}

一応自分で確認してくれ
0099名前は開発中のものです。2014/01/25(土) 23:12:47.19ID:jy8SNfJb
訂正
SCache::SCache(const SCache &copy){}
0100名前は開発中のものです。2014/01/26(日) 00:11:58.97ID:Iw5/1QMx
うーん、、特にコピーコンストラクタは触ってないんだけどなぁ
ありがとうございました
0101名前は開発中のものです。2014/01/26(日) 00:17:49.78ID:wqDtdTDr
なぜかvectorサイズが0になってるとか、
例外ダイアログでvectorほにゃらら〜がでるとか、それ系なん?
0102名前は開発中のものです。2014/01/26(日) 00:28:30.05ID:wqDtdTDr
俺は前にこれでやらかしたことがあるぜ
vectorの内部バッファが大きくなるとポインタが無効になる

std:: vector<Hoge> list;

Hoge* add(Hoge &obj)
{
list += obj;
Hoge* last = &list[ list.size()-1 ];
return last;
}
0103名前は開発中のものです。2014/01/26(日) 08:53:27.52ID:Iw5/1QMx
>>102
2000個ぐらいなんだけど、多い?
0104名前は開発中のものです。2014/01/26(日) 09:28:31.24ID:+p1FZWAS
vectorは内部バッファの領域拡張が発生した時にその領域を指してるポインタは無効になるよってこと
だから要素数がいくつだったらって話じゃないよ
0105名前は開発中のものです。2014/01/26(日) 09:48:24.53ID:f2NeeHoK
vectorの領域拡張はフラグメンテーションが起きやすいよね
0106名前は開発中のものです。2014/01/26(日) 12:46:34.63ID:WQN234w5
何でそのへんの仕組み理解してないのにわざわざ生ポ使うんだよ!
0107名前は開発中のものです。2014/01/26(日) 15:37:26.70ID:1jTIwhcQ
>>105
瑣末
0108名前は開発中のものです。2014/01/26(日) 16:41:16.86ID:RpTDvif5
>>105
STLコンテナにアロケータ設定できるのも知らんのか?
そもそもメモリコンパクションがどうとかいう話は
GC系言語ですらとっくに切り捨てた昔話だと思うが
0109名前は開発中のものです。2014/01/26(日) 17:41:28.90ID:f2NeeHoK
>>108
アローケーター操作するの面倒じゃね?
ある程度大きめにメモリーを取得しといて使い回す方が楽っぽいが
0110名前は開発中のものです。2014/01/26(日) 17:56:52.23ID:RpTDvif5
要は固定サイズの配列だろ?
好きなようにやればいいさ
0111名前は開発中のものです。2014/01/26(日) 18:42:00.91ID:f2NeeHoK
いや可変サイズだが
あらかじめ取得しといた容量よりも大きなサイズが必要になったら倍のサイズに領域を拡張してる
0112名前は開発中のものです。2014/01/26(日) 18:47:27.36ID:f2NeeHoK
>>108
つーか>>102の場合はvectorよりもlist使った方が良くないかい?
0113名前は開発中のものです。2014/01/26(日) 18:52:43.37ID:y8TPPY9Q
一見listの方が速そうに思えるんだけど、
実際ベンチマークを取るとvectorの方が速いことが多いので侮れない。
0114名前は開発中のものです。2014/01/26(日) 18:59:37.83ID:f2NeeHoK
いや速度よりもフラグメンテーションでアプリが跳ぶ事を気にしてるんだが
0115名前は開発中のものです。2014/01/26(日) 19:20:58.79ID:1jTIwhcQ
>>109
>>114
やっぱり瑣末かと。換言すれば、取るに足らない、微レ存、取越苦労、枝葉、の話かと。
いや違う考慮に値するというなら問題が再現可能な状況を示してみればいいのでは。
異常な頻度で確保/再割当/解放を繰り返すような無理な状況設定が必要になるけど。
件の話なら適切にreserve使えばいいかと。それで解決しない問題ってあるかな?
0116名前は開発中のものです。2014/01/26(日) 19:22:33.48ID:1jTIwhcQ
補足
ヒープ割当はフラグメンテーション回避で独自のメモリプールをーとかこの手の
取らぬ狸の皮算用になりがちな話題は何度目かというくらい既視感があったので
過去発言を適当に検索。関連ありそうなので貼り

> PCの場合、例えば平凡なDoug Lea Malloc(の亜種)を使うことについて
> 処理速度上の問題で難癖を付けるには、意図的に相当に意地悪な(過酷な)状況設定を
> 引っ張ってくる必要があると思うなぁ

> 例えば3D視点のゲームで、視覚効果に使う粒子状の短命オブジェクトが盛り盛り
> 無数に画面上に散りばめられてて、それらが何と一粒一粒馬鹿正直にヒープから
> メモリ割り当てされてて何の工夫もない線形リストに挿入されてて、毎フレーム
> 線形リストを馬鹿正直に巡回して一粒一粒更新したり削除即時解放したりとか

(この状況設定がなぜ意地悪かというと)

> 描画関数に渡すパーティクル用のデータ構造と明らかに違う状態だから

(不必要な)

> セットアップもあるしね。まぁ、いずれにせよ、何でそんな馬鹿な
> 想定を持ち出すんだと閉口するような話に持っていかないと処理速度上の
> 問題で横槍いれるのは難しいと思う
0117名前は開発中のものです。2014/01/26(日) 19:24:03.74ID:y8TPPY9Q
>>114
オレオレ用語じゃ意味が分からん。
おそらくその現象は君の脳内世界でしか発生しない。
0118名前は開発中のものです。2014/01/26(日) 19:43:21.57ID:f2NeeHoK
>>117
1jTIwhcQには意味が通じてるぞ?w
>>115
いや、そこまで分かってるなら特に問題は無い……な
ただ、ゲームの場合、ムチャなメモリーの使い方する事が多いから、
reserveを忘れる事も珍しくないのでは?と思ったんだが

まあ、些末な問題と言えば些末な問題か
0119名前は開発中のものです。2014/01/26(日) 20:01:52.93ID:NBq5fzCq
無能がしったかかまして大恥をかきましたってさ
0120名前は開発中のものです。2014/01/26(日) 20:31:03.96ID:q4s5e5oc
つまりどういうこと?
初期化したときに必要な分確保しとけってことでいいの?
0121名前は開発中のものです。2014/01/26(日) 20:59:04.35ID:RpTDvif5
アホの戯言を相手にせず、普通にSTLを使いましょうってこと
0122名前は開発中のものです。2014/01/26(日) 21:10:15.17ID:RpTDvif5
std::vector<T>のTが構造体かクラスであるとき、内部バッファのリサイズに際して
コピーコンストラクタのコストが多数生じること、またコピーコンストラクタにおける
コピーの実装に関する適切さ(シャローコピー・ディープコピー)といった面倒が生じる
リスクを考慮すると、ポインタ型にすることを心がけた方が良いってのはあるかな

もちろん、プリミティブ型に関してはなんの心配も必要ない
0123名前は開発中のものです。2014/01/26(日) 21:16:08.13ID:f2NeeHoK
あれ?ポインタが領域拡張で無効になるケースの解決にはならないような……
容量を十分確保しておけば、無効になりにくいだけで
0124名前は開発中のものです。2014/01/26(日) 21:59:47.79ID:f2NeeHoK
>>120
必要な分が分かってる場合はそれでいい
分かってない場合はポインタを取得し直す必要がある。
0125名前は開発中のものです。2014/01/26(日) 22:16:48.30ID:QJMQDIrF
ここでいうのもアレだが
ソースのバックアップとレポジトリは取れってのをテンプレに入れないか?
0126名前は開発中のものです。2014/01/26(日) 22:24:33.83ID:f2NeeHoK
それ、個人的な問題じゃね?
0127名前は開発中のものです。2014/01/26(日) 23:17:21.24ID:lvnLOcR2
メモリ断片化は気にした方がいいぞ。

参考:ゲ製におけるSTLの問題
ttp://i-saint.hatenablog.com/entry/20101012/1286822888
0128362014/01/26(日) 23:44:04.69ID:UYS8+7kl
俺にはあまり関係ない話だな
処理が多少重いとはいえ、致命的な重さじゃないしな
処理を軽くする場合にはSTLを使うが、それもかなり拡張してあるしな
0129362014/01/27(月) 00:09:52.23ID:H+nDAORl
メモリ断片化=メモリのフラグメンテーション
0130名前は開発中のものです。2014/01/27(月) 00:16:52.22ID:EXjzd9fa
固定サイズメモリを使っているオレに、死角は無い!
0131名前は開発中のものです。2014/01/27(月) 01:48:26.16ID:mugBVfcb
ハードがしょぼくてCPUやメモリがきつい家庭用ゲーム機を前提とした記事だろ
Effective C++ とか与太本に洗脳されて全メソッドにinline修飾するようなもんだ
0132名前は開発中のものです。2014/01/27(月) 02:09:19.06ID:4xmtC5j/
vectorの場合はポインタじゃなくて添字で管理したらいいんじゃない?
0133名前は開発中のものです。2014/01/27(月) 02:31:16.30ID:R0saBUqG
あまり良いやり方ではないな
配列の先頭や中間に挿入されたら
バグのもとになりやすい
0134名前は開発中のものです。2014/01/27(月) 06:25:50.94ID:qr20Z00A
>>124
「必要な分がわかっていない場合」を回避すればいいじゃない
0135名前は開発中のものです。2014/01/27(月) 07:45:48.10ID:qHfddkTR
メモリ断片化ならスクリプト言語を自前すればすぐに起きるぞw
0136名前は開発中のものです。2014/01/27(月) 07:48:53.10ID:vLlLVDDe
>>135
間違えた
×>自前すれば
○>自作すれば
0137名前は開発中のものです。2014/01/27(月) 11:18:44.83ID:EXjzd9fa
>>134
未来の自分にバグを押し付けるようなやり方は、あまり好きじゃないが……ま、人それぞれか
0138名前は開発中のものです。2014/01/27(月) 12:25:27.76ID:qr20Z00A
>>134は、レベル中で発生するオブジェクト最大数をあらかじめ限定してヒープ確保するって手順を想定してた。
※元々の>>124の問題は、ポインタ再取得ってのもあったが

>>135
kwsk

>>137
話が見えんw
0139名前は開発中のものです。2014/01/27(月) 14:38:03.04ID:LXwSCF8m
ん?
vectorにインスタンスをaddした後
vectorが要素数増やそうとメモリ上の位置が変わってもnewしたメモリ位置は変わらないよね?
vectorが移動してるだけでvectorのメモリ上の参照してインスタンスを取ってくるわけじゃないから
newした時点でインスタンスのメモリ上の位置は変わらないんじゃないの?
0140名前は開発中のものです。2014/01/27(月) 15:44:25.62ID:mugBVfcb
vectorが内部で何してるのか見当つかないのか?

vectorは配列を内部でもってるだけ
T* m_buffer = new T[buffer_size];
add(T obj)されると m_buffer[index] = obj; のようにコピーする

そしてバッファサイズが足りなくなると再確保してコピーするわけだ

int new_size = old_size * 2;
T* newBuffer = new T[new_size];
for(i < old_size)
{
newBuffer[i] = m_buffer[i]; // 構造体とかだと、ここのコピーコスト(大)
}

delete[] m_buffer; // <= ここで以前確保したポインタは無効
m_buffer = newBuffer;
0141名前は開発中のものです。2014/01/27(月) 16:15:48.48ID:0NY/NAUW
自分は使ったことないんだけど、boostのIntrusiveコンテナってゲーム制作的にはどうなんだろ
0142名前は開発中のものです。2014/01/27(月) 17:01:18.91ID:mugBVfcb
オレオレSTLの学習コストが嫌でなければ使ってみてもいんじゃない?
大した利点もなさそうだが、プリミティブはSTL::vector、
クラス・構造体はboost::ptr_vectorとか使い分けるのも悪くないと思う

メモリ断片化が〜とかいう話だったらもういいかげんにしろ
0143名前は開発中のものです。2014/01/27(月) 17:57:35.18ID:HdFzU7eb
なんか自信なくなってきたわ

値型(スタック型)を格納してるvectorから、
ある要素の参照(生ポインタ)を取り出しておいた場合、
vectorのリサイズが起きた後はその参照はアテにならなくなる。

っていう話だよな。


vectorに値型そのまま入れるなんて、自分で線形台数用のクラス(それこそ名前がVectorとかになりそうだが)
作ろうと思った時くらいじゃない?
0144名前は開発中のものです。2014/01/27(月) 18:20:18.10ID:mugBVfcb
日本語でOK?

もしプリミティブ型の意味が分からないとしたら、
int, double, float, long, char, short, wcharのことだからな
あらゆるポインタ型も実際はただのintだから同じノウハウで扱える
0145名前は開発中のものです。2014/01/27(月) 18:35:32.27ID:HdFzU7eb
ごめん俺は噛み付いたわけでもなくって、プリミティブ型の話でもなくって、
ヒープとスタックの話・・・というのも語弊があるか、
なんつーか、メモリ上への確保の仕方とかメモリレイアウト考えたらこうなるよねって話だったのよ、ごめん
0146名前は開発中のものです。2014/01/28(火) 00:45:58.29ID:qfuPw86M
うふふ
0147名前は開発中のものです。2014/01/28(火) 00:52:07.03ID:uQ48xUyE
データの使い方によって正しくコンテナ選べばstlだけでも十分
要素がでかくて頻繁に入れ替えが発生してインデックスアクセスがしたいならshared_ptrで包んでvectorにでも入れときゃいい

>>144
64bit環境だとintとポインタのサイズが同じとは限らないから泣くぞ
0148名前は開発中のものです。2014/01/28(火) 01:18:23.07ID:ZKatshV9
>>127の日本語のblogでは「PC環境」って訳されてるけど
原文は「non desktop」なんだよな。

前から思ってたんだが、
限定されたハイエンドPC環境で「しょぼい」コンテンツを走らせられるからドヤ顔ってどうよ?
ゲ製道を究めようとしているワコウドを、間違った方向に導いてるって自覚あるか?
無策無能をアピールして幸せか?
0149名前は開発中のものです。2014/01/28(火) 01:21:24.73ID:ZKatshV9
誤:「PC環境」
正:「非PC環境」
くsっそおおおおおおおおお
0150名前は開発中のものです。2014/01/28(火) 02:11:44.70ID:IvP/YXMv
意味分からん
0151名前は開発中のものです。2014/01/28(火) 10:18:11.91ID:GoTWhCD+
くだらねーメモリの話なんかあとにしな
■ このスレッドは過去ログ倉庫に格納されています