- 1 名前: ◆h6A7qfFFu6 mailto:sage [2008/12/29(月) 11:05:07 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/
- 82 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 00:11:19 ]
- while (1) cout << _T("これがBLというやつか") << endl;
- 83 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 00:18:34 ]
- ハム太郎ってBLものだっけ
- 84 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 01:14:01 ]
- #include <stdio.h>
int sum(int,int); int main(void); { int ham; ham = sum(50,20); printf("%d\n",ham); printf("%d\n",ham + 20); return 0; } int sum(int mix,int max) { int num; num = (mix + max) / 2 * 3 -100; return num; } 6) : error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?) なにがちがうんじゃあああ
- 85 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 01:17:23 ]
- int main(void); ←!!!!!!!
- 86 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 01:18:02 ]
- そ・・そうか!!!
サンクス!
- 87 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 01:56:20 ]
- STLにマルチスレッド
例外発生しまくりなんだけど なにかいいソースコード入力方法ない? デバック追跡機能追加ともいいのかな やっぱクリティカルセクション使わなければいけないのかな? 面倒くさいのよね
- 88 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 02:02:16 ]
- STLはスレッドアンセーフだからマルチスレッドでは使っちゃダメ
別のスレッドセーフに設計されたライブラリを使いなさい
- 89 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 02:12:25 ]
- >>88
クリティカルセクションで保護しても無理ですかね?
- 90 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 02:14:50 ]
- >>89
速度がガタ落ちになってもいいならそれでどうぞ
- 91 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 02:36:06 ]
- >>36
俺はそこで引き合いに出されている診断室を思い出したw
- 92 名前:デフォルトの名無しさん [2008/12/30(火) 12:09:13 ]
- スマートポインターを7種類も8種類も作って、C++のコミュニティって馬鹿なの?
これを用途によって間違わずに使い分けるより、new-deleteの対応付けをきっちりやる方が余程簡単だっつーのw ホント馬鹿だな。
- 93 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:09:22 ]
- プログラムの進捗状況をグラフみたいので表示したいんだが、
グラフィックスライブラリって何がいい? 今から勉強するんだが
- 94 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:11:03 ]
- プロジェクト管理ツール使ってみては
- 95 名前:デフォルトの名無しさん [2008/12/30(火) 12:14:42 ]
- C++は標準のGCを備えない時代遅れのダメ言語
スマートポインタ(笑)を乱造する知的障害者が設計している
- 96 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:28:09 ]
- >>95 またお前か。スマートポインタの種類の数にやたら固執するね。
- 97 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:12:08 ]
- 3つ以上は使いこなせなくて挫折したんだろ。
- 98 名前:デフォルトの名無しさん [2008/12/30(火) 13:17:01 ]
- GCは良いことばかりではないよ。処理に時間食うし。
あと何度も使う配列はグローバルにすれば、再生成に時間食わない。
- 99 名前:デフォルトの名無しさん [2008/12/30(火) 13:18:20 ]
- プログラム書く前に吟味してから作り出せばGC(に任せる処理)は無くせるだろ。
- 100 名前:デフォルトの名無しさん [2008/12/30(火) 13:49:40 ]
- >>99
それならスマートポインタ(笑)もいらないだろ馬鹿
- 101 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:50:30 ]
- >>100
RAIIを知らない馬鹿が出てきたよ
- 102 名前:デフォルトの名無しさん [2008/12/30(火) 14:03:27 ]
- マジレスすると、
単純にnew delete の解放忘れで発生するバグと ごちゃごちゃしたスマートポインタの使い間違いによるバグと どっちが発生しやすいと思う? 後者の方が断然多いと思うのだが。
- 103 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:12:15 ]
- >>77みたいなのがスマートポインタ?
- 104 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:16:44 ]
- ゴチャゴチャしたスマートポインタって、たとえばどんな?
- 105 名前:デフォルトの名無しさん [2008/12/30(火) 14:25:06 ]
- auto_ptr
weak_ptr intrusive_ptr scoped_ptr
- 106 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:26:17 ]
- >>105
それをゴチャゴチャしていると感じるなら、単にそれはお前の勉強不足。 自分の勉強不足を棚に上げてよく言うよ
- 107 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:29:46 ]
- スマートポインタですら管理できないならC/C++はやめた方が・・・
- 108 名前:デフォルトの名無しさん [2008/12/30(火) 14:33:19 ]
- >>106
で、new-deleteよりスマートポインタの方が問題が発生しにくいことについて、 お前の「勉強」の成果は述べないの?
- 109 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:35:21 ]
- >>108
人の事を気にする前に自分の能の無さを嘆けよw
- 110 名前:デフォルトの名無しさん [2008/12/30(火) 14:39:43 ]
- new-deleteの方が、スマートポインタより問題が少ないという仮説を述べた。
それに対して>>106は勉強不足とか頓珍漢な事を言っている。 勉強不足と言うなら、どう勉強不足なのか具体的に説明しろ。 それが出来ないなら>>106は単なる馬鹿だ。話にならん。
- 111 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:43:54 ]
- >>110
うぜえんだよゴチャゴチャと スマートポインタについて説明しだすと長くなる 勉強にも長い時間がかかるしな お前の屁理屈に付き合ってる時間はない
- 112 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:46:22 ]
- 仮説って・・・
根拠もなく「俺は思うのだが」を仮説と呼ぶのか?
- 113 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:51:39 ]
- シチューの方が、カレーよりうまいという仮説を述べた。
それに対して>>106は食わず嫌いだとか頓珍漢な事を言っている。 食わず嫌いと言うのなら、どう食わず嫌いなのか具体的に説明しろ。 それが出来ないなら>>106は単なる馬鹿だ。話にならん。
- 114 名前:デフォルトの名無しさん [2008/12/30(火) 15:10:05 ]
- GCもnewも使わず、STL一本でいけば良いと思うんだが。
そしたら自動変数と同じ使い方でしょ。
- 115 名前:デフォルトの名無しさん [2008/12/30(火) 15:11:36 ]
- 速度や安定性重視ならはじめに確保したメモリを使い回すのが良いし。
頻繁に動的確保するのは、速度と安定面でよくない。
- 116 名前:デフォルトの名無しさん [2008/12/30(火) 15:15:46 ]
- STLを含めて動的確保は実測してみると速度が遅い。
C++の自動変数だと、あらかじめ確保した領域を、使い回すから、確保と解放が無くて良い。
- 117 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 15:39:07 ]
- >>116
自動変数はスタック領域だから、あらかじめ確保した領域を使いまわすってのは ちょっと違うだろ まぁ 「厳密にいえば間違ってはいない」 ってやつだろうが
- 118 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 15:40:43 ]
- ageてる釣り野郎に反応しちゃダメだってば
- 119 名前:デフォルトの名無しさん [2008/12/30(火) 15:53:49 ]
- スタック領域 = あらかじめ確保した領域
必要なサイズがコンパイル時に決定されて、それを確保したらC++が管理して使い回す。
- 120 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:21:57 ]
- スマートポインタに迷ったらshared_ptr/array使っておけばいいじゃない。
循環参照?何それおいしいの? まあでもスマートポインタの乱立を許したのはC++の失策だったと思う。 auto_ptrの代わりにshared_ptrをC++98の時点で入れておけば少しは良くなったと思うんだけど。
- 121 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:25:14 ]
- >>108
こいつ頭おかしいな。 これで仕事とか勤まるのか?
- 122 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:27:29 ]
- >>121
こいつ頭おかしいな。 これで仕事とか勤まるのか?
- 123 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:29:37 ]
- 自作自演くせえなあ
- 124 名前:4 mailto:sage [2008/12/30(火) 16:30:05 ]
- 4ですが、あまりのスルーされっぷりに泣きそうです
- 125 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:32:59 ]
- >>124
>>5-7>>12
- 126 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:43:10 ]
- >>123
だってマジで頭おかしいもん。 new-deleteのほうが問題起きないって、証明どころか傍証をあげるとか 説明もいっさいなしで、>>108の頭の中では、いつのまにか証明済みっていうか 「事実」になちゃってるわけでしょ? >>110で、多少おかしいと思ったのか「仮説」って言い直してるけど、 自分から言い出したのに、相変わらず相手に反論しろって言ってるし。
- 127 名前:デフォルトの名無しさん [2008/12/30(火) 16:50:11 ]
- new-deleteでは、newしたら必ずdeleteすることだけを覚えておけば問題が起きない。
スマートポインタは乱立するそれぞれのポインタの特性を覚えておかなければいけない。 例えば、shared_ptrを使うところをweak_ptr を使ったら死亡。 故に、new-deleteの方が問題起きない。 証明終
- 128 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:51:39 ]
- >>127
俺がいまいじってるソースは、異常ケースでreturnして、delete忘れてるってのが 何箇所もあるんだけど。
- 129 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:52:36 ]
- >>128
それはお前があほなだけ
- 130 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:54:21 ]
- すげぇ真性のバカだな
証明終 とか書いちゃってもうみてらんない
- 131 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 16:56:18 ]
- 注意してコーディングしてればなんとかなるってもんじゃないから、
あたらしい言語はGC採用してるんだろ。
- 132 名前:デフォルトの名無しさん [2008/12/30(火) 16:59:13 ]
- つまり、C++は標準のGCを備えない時代遅れのダメ言語ってことだな。
- 133 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:01:52 ]
- もうそういう事でいいようぜぇ
- 134 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:02:26 ]
- 悔しいが、反論できない、、
- 135 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:03:54 ]
- C++/CLIがあるじゃないか
- 136 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:03:57 ]
- Dみたいに、GCあって、スコープが外れたらデストラクタ(相当)が呼ばれるって
仕組みがあればいいけど、ま、C++ならスマートポインタでいいかな。
- 137 名前:デフォルトの名無しさん [2008/12/30(火) 17:06:10 ]
- auto と同じ使い方だけで良いんだったらSTL使えばいいじゃん
- 138 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:07:05 ]
- GCはメモリに対してリークの心配がなくなるというだけであって、
それ以外のリソースには無力だぞ
- 139 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:09:22 ]
- >>130
反論できないからってごまかしてんじゃねーよカス
- 140 名前:デフォルトの名無しさん [2008/12/30(火) 17:11:30 ]
- GCが標準装備だったら、高性能なハードでない場合に困るだろ。
組み込みとか 組み込みシステム - Wikipedia 具体例 家庭用電気機械器具 炊飯器、洗濯機、エアコンディショナー デジタルカメラ テレビ、ビデオデッキなどAV機器 ゲーム機、携帯電話などのデジタル家電 エレベーター 信号機 複写機 自動販売機 パチンコ機、パチスロ機、スロットマシン
- 141 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:13:54 ]
- 世の中、参照カウントでGC付きって言っている言語処理系だってあるんだから、
C++でコーディングするときも常にshared_ptrを使えばいいんだよ。 >>127の「newしたら必ずdeleteすること」を次のように言い換える。 new→newしてshared_ptrの構築 delete→reset() 128の問題は無くなるし、循環参照もnew-deleteで(手動でやれば)問題にならないならば、 shared_ptrでも手動でやれば問題ないはず。 性能とか組込とか知らんがなという前提で。
- 142 名前:デフォルトの名無しさん [2008/12/30(火) 17:18:21 ]
- ガベージコレクションはプログラムの本来の動作とは別に時間のかかる処理であり、実装によっては一旦処理が開始されると他の処理を止め、CPUを長時間(数百ミリ秒から数十秒)占有することもある。
さらに、ガベージコレクションの動作タイミングの予測やCPUの占有時間の事前予測などが困難なことから、デッドラインが決められてるリアルタイムシステムには向いていない。 ガベージコレクション - Wikipedia ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
- 143 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:19:32 ]
- あんまり関数を分けると重くなるから良くないって聞いたことあるけど、それって
昔のCPUがしょぼしょぼの時の話しで今ではそれほど気にしなくていい? たまに数行づつで関数に分けてる人いるけどそのぐらいまでやっちゃっていいの?
- 144 名前:デフォルトの名無しさん [2008/12/30(火) 17:22:38 ]
- >>143
程度によるが、最新のコンパイラを使っていれば差はたいしてでない。 分割したりオブジェクト指向にすることは、管理が楽になるという利点がある。
- 145 名前:デフォルトの名無しさん [2008/12/30(火) 17:25:21 ]
- でも、再帰呼び出しは確実に遅くなるよ。ループに書き換えられるという再帰定理というのがあるので
なるべく再帰呼び出しは使わない方が良い。
- 146 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:26:55 ]
- 「早すぎる最適化は諸悪の根源」
実行性能が許容できないくらい悪くて、その原因が本当に 関数呼び出しのコストだと分かった時点で初めて そういう小手先の手段に出るものだ そんな関数の分け方くらいではまず間違いなく性能に何の影響もないと思うが
- 147 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:27:36 ]
- >>143
数行とか一行の関数を書くとか普通だから。
- 148 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:29:27 ]
- >>139
おまえは常に「覚えておいて」プログラム組んでろカス
- 149 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:30:33 ]
- >>145
意味が分からない。 「末尾再帰だったら、再帰でもいい」とかだったら意味が通じるけど。 (再帰だって、速度に問題なかったらふつーに使うわな。あたりまえだけど)
- 150 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:31:25 ]
- 再帰はループに書き換えられるよ!って言ってるんだろう
- 151 名前:デフォルトの名無しさん [2008/12/30(火) 17:35:07 ]
- 関数呼び出しに、時間食ってるのでは? と予測してマクロ関数に書き換えてみたり
するのだが、ほとんど差が出ないという経験から関数として\を使うマクロは使わないことにしている。
- 152 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:39:09 ]
- ありがとう。とりあえずガンガン関数に分けちゃって問題ないんだね
これからはガンガン分けていくことにします
- 153 名前:デフォルトの名無しさん [2008/12/30(火) 17:44:46 ]
- MS-BASICはガベージコレクション内蔵らしいね
- 154 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:47:08 ]
- >>143
数行の関数を作ってもOKだし推奨 関数の呼び出しのコストが問題になるのはループ内とかとにかく繰り返し多数呼び出される場合だね。そういう場合はinlineを使う。 仮想関数は少し重めだからループ内では要注意 最近のコンパイラはinlineの指定をしなくても勝手に判断してインライン展開をしてくれるから気にしないでいい。
- 155 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:52:21 ]
- >>153
ああ文字列の操作領域だろ 確か3Kバイトが標準で一杯になったらGCを走らせる 8ビットならではの世界だった N88BASIC(86)はもう少し広いだろうが
- 156 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:01:55 ]
- 突然マイコンが止まるあれだね
- 157 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:11:57 ]
- そうそう
BASICで文字列を頻繁に操作していると時々止まった その謎が解けるまで(つまりはGCだという事を知るまで)時間がかかった
- 158 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:29:05 ]
- GC GCってゲームキューブじゃないのなw
何の騒ぎかわからんかったよ
- 159 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:31:28 ]
- >158
ゲーム関連板ならゲームキューブのことだろうけど ここはプログラム板だぞw ガベージコレクションに決まっておろう
- 160 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 19:07:49 ]
- どの言語を覚えればいいの・・?
C言語ってだめなの??
- 161 名前:デフォルトの名無しさん [2008/12/30(火) 19:09:13 ]
- Cでいいよ。C++でもいいけど。
- 162 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 19:25:30 ]
- C++ってCの付けたし見たいなものだよね・・?
- 163 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 19:26:54 ]
- CがC++の一部を抜き出したものだと思え
- 164 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 19:28:13 ]
- わかりました
- 165 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 19:29:05 ]
- >>162
いまや全くの別物のくせに、そういう偏見が間違っているとも言えない微妙な関係。
- 166 名前:デフォルトの名無しさん [2008/12/30(火) 19:37:27 ]
- まあ、質問スレを共通にされるくらいだから、同じようなものだ
- 167 名前:デフォルトの名無しさん [2008/12/30(火) 20:50:04 ]
- 結論としては、shared_ptr以外は不要ってことで、おk?
- 168 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:52:27 ]
- >>167
他のスマートポインタも使い方憶えればいいんじゃない?
- 169 名前:デフォルトの名無しさん [2008/12/30(火) 20:55:54 ]
- struct shiken_in test;
memset(&test,0,sizeof(test)); このような文があるのですが、 &testがさす意味はなんなのでしょうか? &がつく意味がよくわからないのです
- 170 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 20:58:52 ]
- アドレスです
- 171 名前:デフォルトの名無しさん [2008/12/30(火) 21:02:39 ]
- >>168
覚えたとしても、それらを使い間違わないようにビクビクしながら使うよりは、 単純にshared_ptr使った方が、バグが少ない堅いコーディングができると思うけど。
- 172 名前:デフォルトの名無しさん [2008/12/30(火) 21:07:19 ]
- >>170
ポインタの宣言がなくてもアドレスは使用可なのでしょうか ていうか、子の場合アドレスで指定する意味はなんでしょうか?
- 173 名前:デフォルトの名無しさん [2008/12/30(火) 21:10:39 ]
- コピーを避けるためです。
- 174 名前:デフォルトの名無しさん [2008/12/30(火) 21:30:52 ]
- ポインタならコピーをされる?
- 175 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:38:00 ]
- ポインタなら、ポインタだけ渡せばいいからデータ自体はコピーされない
- 176 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:43:01 ]
- >>167
自ら使うのはshared_ptrだけでもいい。次期標準にも入る。 入るおかげで、C++0xでは、標準に入っていないのは無視してOKと言えるようになるんだが。 例えば、>>105で挙げられているintrusive_ptrは知っていても大多数が使ったことないだろう(俺もだ)。 scoped_ptrはauto_ptrとまとめてunique_ptrになる。 #びくびくせず自信を持って使えるならweak_ptrも使ってほしい。
- 177 名前:169 [2008/12/30(火) 21:51:30 ]
- ますますよくわからなくなってきた
まず、構造体を宣言して sizeof(test)でなにをかえすんだろうか testの中身は宣言だけしてるだけで、実際何もはいってない?いや、0ならはいってるのかな で、memsetでそのtestのアドレスの先頭からだけど、testのアドレスの中身じゃなくて、アドレスの 先頭から0で埋めるとかおかしくないのかな。アドレスであってアドレスが差す値じゃないから。
- 178 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:57:22 ]
- memsetは、アドレスが指す領域を指定した値で埋める関数だよ
- 179 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:57:33 ]
- sizeof testはsizeof (struct shiken_in)と同じと決まっている。
memsetにはアドレスを渡すけど、 memsetが0で埋めるのは、アドレスが差す値。
- 180 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 21:59:08 ]
- 変数じゃなくて、変数の「場所」を渡してる
memsetはその「場所」をみてそこをsizeof(test)バイト分0で埋めてる
- 181 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 22:15:59 ]
- >>171
まあ、でも、そこまで難しいものでもないし。
- 182 名前:169 [2008/12/30(火) 22:20:36 ]
- 実際、sizeof(test)は何バイトになるのでしょうか?
|

|