[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/16 02:43 / Filesize : 202 KB / Number-of Response : 823
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part95



1 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 04:55:24.99 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part94
toro.2ch.net/test/read.cgi/tech/1329512856/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.78【環境依存OK】
toro.2ch.net/test/read.cgi/tech/1331894668/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

301 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 16:45:50.43 ]
スマポが使えるなら使ったら方がいいが、
パフォーマンスやメモリの観点で使わない方がいい場合もあるからケースバイケースだな。

302 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 17:04:43.03 ]
shared_ptrはともかくunique_ptrは消費メモリもオーバーヘッドも生ポインタと変わらんと思う

303 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 17:23:15.50 ]
生成と破棄x30000000、sizeof比較

int*: time: 2.13s
ideone.com/2tLcx

std::unique_ptr<int>: time: 2.13s
ideone.com/wtba4

std::shared_ptr<int>: time: 4.41s
ideone.com/UDuJE

sizeof:
ideone.com/EtftU
> sizeof(int*) = 4
> sizeof(std::unique_ptr<int>) = 4
> sizeof(std::shared_ptr<int>) = 8

304 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 17:24:20.59 ]
亡きauto_ptrさん
ideone.com/sc7fr

305 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 17:56:17.19 ]
ユニポすげえええええええええ

306 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:21:00.33 ]
多機能ではなくスマートさを追求したユニークさんこそ至高

307 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:33:51.01 ]
>>297
会社がboost使わせねェんだから仕方ねぇだろ

308 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:41:03.98 ]
>>307
scoped_ptrくらいなら定義すればいいだろ

309 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:43:11.82 ]
>>307
内製の糞ライブラリ使うしかないのかwww



310 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:49:48.85 ]
社員の腕前まるっとまとめて信用されてないんだろ
紐付けとかないとなにやらかすかわからん集合無知みたいな

311 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:03:22.59 ]
タダより高いものはないとか言ってセキュリティがうんぬん

312 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:10:06.48 ]
じゃあ、コンパイラから全部内製で。

313 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:12:18.61 ]
単にboost分からないから使わせないだけだよ

314 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:13:50.23 ]
じゃあ標準ライブラリは完全にわかってるのか。すごいなぁ。

315 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:19:58.86 ]
const auto_ptr ぐらいは使えるだろ

316 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:24:12.06 ]
というかC++だって完璧にわかってるやつなんてそうそういねぇよ

317 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:50:09.14 ]
C++はあのPL/Iよりも言語仕様が大きいんだぜ
全部覚えたら神様と崇めるよ

318 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 20:58:47.74 ]
std::vector<Hoge>でHogeをコピーしないでHogeのデフォルトコンストラクタ呼び出す方法ありますか?

319 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:02:10.59 ]
ソースで示して



320 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:06:08.79 ]
>>318
resize

321 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:07:54.55 ]
C++11より前だとコピるぞ。

322 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:08:02.54 ]
resizeでコピーが発生せずデフォコンで構築されるのはC++11から

323 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:31:17.40 ]
>>307
どんな理由で禁止されてんの?

324 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:45:46.59 ]
上司「今の僕には理解できない」

325 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:47:35.90 ]
上司「うちはBCC使ってるんだけどコンパイル通らないじゃんあれ」

326 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:47:36.00 ]
「なぜあなたが理解できないということが禁止の理由になるのですか?」

327 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:47:46.73 ]
>>323
テンプレが役に立たなかった時の名残

328 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:49:27.89 ]
>>327
なら今はもう問題ないな。

329 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:50:34.36 ]
VC6が未だ現役という・・・



330 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:51:37.50 ]
boostのコンパイルが通らない環境の仕事つい最近まであった

331 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:53:21.90 ]
先輩「STLも禁止な」

332 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 21:55:01.37 ]
俺様「OTL」

333 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 22:13:36.61 ]
Oresama Template Library

334 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 22:26:00.18 ]
先輩「templateも禁止な」
俺「それC++を使う意味なくないっすか?」

335 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 22:26:55.36 ]
C99非対応の処理系ならベターCとして十分実用性が

おっとMicrosoftの悪口はそこまでだ

336 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 00:23:07.53 ]
>>334
3〜5年前なら当たり前のようにそういう話があった
今でも少なくない

337 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 00:34:43.34 ]
そうだな、昔も今もアホは居るからな。

338 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 01:21:21.23 ]
もっと昔だと・・・templateは予約語だった

339 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 01:25:34.85 ]
mapに特定のキーが登録されているかいないか調べる方法ありますか



340 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 01:27:44.73 ]
find

341 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 01:30:26.65 ]
count

342 名前:デフォルトの名無しさん [2012/05/26(土) 02:09:27.73 ]
VS2010を用いているのですが、コントロールがクラシックデザインなのはどうしようもないんですか?

343 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 02:13:27.57 ]
>>342
ttp://eternalwindows.jp/control/controlbase/controlbase09.html

344 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 02:46:18.77 ]
>>313
コンパイラが変わると、コンパイルが通らないからだよ。
ビルド環境にboostがあるとは限らんし。

早くboostがstlになればいいんだよ。

345 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 02:51:18.55 ]
糞環境自慢されても

346 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 03:05:38.09 ]
業界標準以外は導入しづらい

347 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 07:27:02.37 ]
>>294
遅レス&&全レス読んでないが、関係はある
クラスFooのコンストラクタ内で例外が発生すると、
その時点で構築済みメンバのデストラクタはもれなく呼ばれるが
Fooインスタンス自体のデストラクタが呼ばれない
したがって、Fooがメンバとして単純なポインタFoo::m_pを含んでおり、
それに対するnewが成功した後に(別のnew等で)例外が発生すると
Foo::m_pが指すメモリを解放する奴が居ないからリークする

解決策はFoo::m_pのような奴を生のポインタではなくauto_ptrにするとか



348 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 07:41:07.42 ]
いやすまんnew_handlerか、
new_handler中身でやることのパターンは何通りかあるが、結局例外を投げてしまう場合、と読み替えてちょ

349 名前:デフォルトの名無しさん [2012/05/26(土) 13:07:43.57 ]
コンパイラごとのSTLのアルゴリズムは
イテレーターのクラスによって要請されているインターフェイスの
オペレーターを全て実装していることを仮定されていますか?
よろしくお願いします。



350 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 16:52:27.58 ]
>>349
C++に準拠してれば、C++の仕様に沿ったオペレーターを実装してるだろう。
C++に準拠してないコンパイラーの話なんかされても知らんがなとしか言えん。

351 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 17:23:19.31 ]
>>349
何を聞きたいのかわからんが、
一応テンプレートに現れるシンボル(オーバーライドされたオペレータ含む)はtwo-phase lookupと言う規則で解決され、
インスタンス化しないテンプレートに現れるシンボルやオペレータについては宣言も実装も一切要らない

352 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 17:43:29.25 ]
すなわちSTLアルゴリズムの使用するイテレーターテンプレートのインスタンスの
インターフェイスの提供するファンクションはSTLで実装されているイテレーターのイテレータークラス
によって類別されて決定される全てのファンクションが実装されていることを前提としているのでしょうか?

353 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 18:00:41.46 ]
コンセプトが導入されてない現状ではそのアルゴリズムの実装が使うイテレータの機能だけが使用可能ならば問題ない
だから現状ではイテレータの要件を完全には満たしてないクラスを渡しても動作するアルゴリズムの実装はありえる

354 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 18:05:54.57 ]
ただし、あるアルゴリズムがイテレータのどの機能(ってfunction=関数?)を使うかは実装依存。
一回動けばいいような書き捨てプログラムでもない限りきっちり作っておくが吉。

355 名前:351 mailto:sage [2012/05/26(土) 18:56:58.81 ]
ああスマン、自作イテレータをSTLのアルゴリズムに食わせる話か、
初心者なものでイテレータはSTLのコンテナから出てくるものが全てだと思い込んでいた、

356 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 20:27:12.61 ]
自前でちゃんとしたイテレータを書くのは
結構面倒くさいからboost使うといいよ

357 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 21:41:27.08 ]
>>348 読み替えてもやっぱり new_handler とメモリーリークの関連が見えてきませんね。

358 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 21:50:08.94 ]
変態イテレータあるよな
for_eachで回すだけで面白い事が出来る奴とか

359 名前:291 mailto:sage [2012/05/26(土) 21:52:12.10 ]
>>357=294 ?
俺は、>>275がnew_handlerでなんとか出来るらしいと
書いてたからnew_handlerでメモリーリーク対策できなくねと書いたまで。
new_handlerとメモリーリークが関係するかはしらんがな。



360 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 21:57:56.25 ]
そうか。すまんかった。

361 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:03:50.90 ]
>>357
Fooのコンストラクタ内で例外を捕捉しないものとして、
>347な状況でnew_handlerから(何でもいいが)bad_alloc等の例外をスローすると、Foo::m_pが指す先のメモリがリークする
>347の状況であってもnew_handler内で(あらかじめ非常用にリザーブしておいたメモリから割り当てる等の手段で)
例外をスローせずに処理した場合、リークは起きない

よって、new_handlerの中身がリーク発生に全く無関係とは言えない


362 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:09:06.28 ]
空きがもうない状況の話なのに
空きがあったらってぶっちゃけ関係ないよな

363 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:18:29.67 ]
>>362
>空きがあったらってぶっちゃけ関係ないよな
空き0前提はともかく、非常用のリザーブ領域まで0前提なのか否かはスレの流れからは自明ではありませんね〜
new_handler内でユーザー向けダイアログボックス用にリザーブ領域メモリを割り当て、
エラー表示した後プログラム終了、という設計も有り得る

364 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:22:05.70 ]
>>363
newが例外を出した時点で、new_handlerは失敗してる。

365 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:25:43.17 ]
>>363
newが例外だしてりゃリザーブ領域空ですよね

366 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:30:47.43 ]
>>364,>>365
kwsk
デフォルトのnew_handlerを自作new_handlerに差し替えた後でも
newが勝手に例外をスローするというのは初耳


367 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:36:04.77 ]
>>366
自作new_handlerが何も割り当てできなかったらNULLでも返す気か?
要点は例外じゃなくて、new_handlerがなすすべがない状態におちいてっるて
所なんだからそれぐらいは解れよ

368 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:41:05.88 ]
>>366
つまらん事で意地をはるな
得することなんて何もないんだから

369 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:48:40.40 ]
>>367
自作new_handlerなんだから、なすすべがない状態に陥らないように設計もできるよ?
単純な方法としては、プログラムの起動時に数KBかそこらのメモリを非常用にnewしておき、
そのポインタを大域変数g_pReservedに記録、
その後本当にメモリが0になったらg_pReservedからとりあえず返し、ただしプログラム終了フラグをセットして
速やかにプログラムを終わらせる、みたいな

そのためのnew_handlerです




370 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:53:03.92 ]
>>365 の話がでてるのに、リザーブがあればという。
もうダメだなこの人完全に意固地になってる

371 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:53:30.08 ]
>>369
g_pReserved が使われた後にもっかい new したら同じこと。

372 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:55:46.29 ]
>>361
元々可能性の低い失敗がもし起こったらどうなるか、って話をしてるのに
可能性をもう少しほんのちょっとだけ下げる方法の話をしても意味ないでしょ。

373 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:57:52.31 ]
>>369
話の論点からずれるけどアホだろあんた
最初にnewしてなければその分空きがあったはずで、意味がない。
new_handlerとして有効な使い方は、高速化の為にだけ先読みしてた
画像データなどのキャッシュ解放。不要なデータを削除すんのが普通。

#余談だから無視してくれ

374 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:09:46.56 ]
>>370
デフォルトのnew_handlerを自作new_handlerに差し替えた後ならnewが勝手に例外を投げることはないから、
>365の言うような現象は起きない。よって、>365に基づく批判はナンセンスだし

>>371
まあそこらの細かい設計は一考を要するが、
別にg_pReservedをただ一つのオブジェクトに一括で返さねばならないわけでもなし

>>372
可能性を下げる方法の話ではないよ。プログラムを正常終了させる話。
本当にヒープ0になってからでは何も仕事はできない、という主張をするなら、
後始末という仕事を正しく遂行するため用のメモリをあらかじめ確保しておくという発想に到らねばおかしい

>>373
無視するが、>372へのレスの通りである


375 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:17:56.17 ]
>>374
g_pReservedが空になったらどうする気だ?

376 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:21:13.73 ]
>>375
本当にそうなったら万事休すだが、
やる仕事は後始末、と限定し、それに必要十分なメモリ量を見積もって
g_pReservedとして確保しておけば、それは避けられる

377 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:23:24.66 ]
>>376
万事休すになった時のことをみんな言っているんだけど
それと、その時あんた例外なげないっていってたけどどうする気だ?

378 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:33:22.47 ]
>>376
newを呼ぶ側からすればどこから取ったかなんて知らんのですよ。
取れれば有効なポインタが返り、取れなければ例外、それだけ。
足りなくなったのでクリーンナップして終了させる必要があるなんて知る余地もない。
std::vector<T>あたりのメンバ関数/コンストラクタで足りなくなったとして、お前は一体何をすればいいと言うつもりだね?

379 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:36:22.15 ]
>>377
「万事休す」に2種類あることに注意だな。ただしどっちの解決策も示し済みwwwwww

(1) 後始末を遂行するためのメモリがリザーブ領域に残っているがそれ以外が0になった「万事休す」なら、
  リザーブ領域のメモリからの割り当てて後始末を遂行し、プログラムを正常終了すれば良い(>369, >374の3コ目)

(2) 後始末を遂行するためのメモリまで0になる「万事休す」は、
  >376のようにきちんと必要なメモリ量を見積もって確保しておけば生じない

ていうか、漏れとしてはnew_handlerの一活用方法を述べているだけで、そればかりに食いつかれてもなんだか悲しい
興味がおありの向きは、自力でnew_handlerを調べて活用方法でも考えたらどう?
例えば、new_handlerから自作GCを起動してしばらく使っていないオブジェクト(当然GCで管理する設計にする)
を解放し、空いたメモリを返すとか



380 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:40:36.58 ]
>>376
>>369のやり方をすれば、ヒープが枯渇するタイミングが早まるだけで、
使えるヒープの総量は変わらないんだけど

381 名前:デフォルトの名無しさん [2012/05/26(土) 23:54:34.16 ]
>>378
>newを呼ぶ側からすればどこから取ったかなんて知らんのですよ。
おk newがメモリをどこから取るかに依存するような話はしていないつもりだが

>std::vector<T>あたりのメンバ関数/コンストラクタで足りなくなったとして、お前は一体何をすればいいと言うつもりだね?
漏れはg_pReservedに残っているメモリでプログラムの後始末を遂行し、終了するという考え方を示した。
後始末と終了以上の仕事をさせたいというならどうするか考えるのはYOUの仕事ですな

>>380
使えるヒープの総量が変わらない、はその通り
>369のやり方は、後始末を遂行する余力を残した状態で、ちょっとだけ早期にヒープ枯渇を察知することに意味がある。

382 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 00:22:31.86 ]
>>381
おい、new_handlerが不足を察知したところでnewを呼ぶ側にはそれを知る術がない、といっているのだが。

383 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 00:27:33.02 ]
>>379
リザーブが枯渇した後なんだから(1) は文脈としてありえないだろ
見積もれないからnew_handlerが呼ばれてるわけで(2)も終ってる

384 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 00:36:22.89 ]
>>374
> 可能性を下げる方法の話ではないよ。プログラムを正常終了させる話。
どっちにしてもメモリーリークと関係なくね?

プログラムを正常終了させる話にしても、普通にスマートポインタつかってりゃ
例外が飛んで catch されるなり terminate() されるなりしてプログラムを終了
させたければさせられるわけだが、そのよくわからん new_handler を使う方法は
何がうれしいのかさっぱり。

385 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 14:26:48.55 ]
>>328-383
Effective C++ 改訂2版 p.49に>363に類似だがより良い方法の記述がある
>たとえばプログラム起動時に予備として大きなメモリブロックを割り当てておき、
>new-handlerが初めて呼び出されたときにそのブロックを開放するという方法がある。

記憶管理の話は荒れますねwwwwww


386 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 14:31:55.15 ]
>>385
荒れてる原因は話題じゃなくて、無理を通そうとする若干一名に見える。

387 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 14:34:23.79 ]
>>384
>385の引用の続きだが
>予備のメモリを解放するときには、ユーザーにメモリが少ないことを警告
>し、もっとメモリを追加しないと今後の要求が失敗する恐れがあることを
>知らせるメッセージを出す事が多い。
↑これはメッセージを出すケースだが、予備が十分なら、
メッセージを出すのがある程度高価な処理であるケース
(例えばダイアログボックススに長いメッセージを出す必要があり、文字列をnewしたい場合等)に対応できる。

また、ヒープメモリが予備含めて完全に0になった状態で
「(例外をcatch等して)プログラムを(正常に)終了させたければさせられる」
という>384の自信はどこから来るんだ;


388 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 14:36:00.96 ]
>>386
違うな。Effective C++の著者と漏れとで少なくとも2名だ

389 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 15:00:39.65 ]
>>388
お前か。

みんなが >>361 の「new_handlerの中身がリーク発生に全く無関係とは言えない」について
ツッコミを入れているのがわからないの?



390 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 15:19:59.91 ]
>>389
じゃあ藻前ら流の「全く無関係」のwell-definedな定義と「全く無関係」であることの論証よろ

少なくとも>388は、A,Bを命題として、「A→Bかつ¬A→¬BだからAとBは無関係とはいえない」、
という論法(のちょい派生)なわけだが

391 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 15:21:59.07 ]
しつれい
× >388
○ >361

392 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 15:27:48.24 ]
>>390 命題A,Bってそれぞれ何のこと?

393 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 16:04:43.89 ]
\           /     /. : : : : : : : :ヽ-‐.: :_;. --- .._: : : : : : : :\       \      /
_  争  も  _   /, -‐==ミ: : : : _,ィニ-‐……ー-: 、`ヽ、: : : : ヽ、      _   争   _
_  え  っ  _     . .:´: : : : : : : ≠:7: : : : : : : : : : : : :ヽ、 ヽ| : i : : :,     _    え   _
_   : . と   _   /.: : : : -‐: :7´: : /:,ハ : : : :ヽ : : : ゝ-- :\ | : :! : : : ,   _    :   _
_  :      _ /, -‐/.: : : : :i : : /ィ:爪: : :\ :\ : : :\: : :`ト : !: : : :′   _   :    _
             〃  /. : : : : : : |.:イ :ハ:| \: .、\: : xィ¬ト、: :| : : ! : : : : :,
/          \   /.: :/.: : : : /l : |/Гト、       / |_,ノ0:::ヽ : : :i : : : : :′ /        \
 /  |  |  \    | .:/.:/. : : :i: i : | |ノ0:::ト :::::::::::::   |: :∩::::::ト: : : !: : : : : : :,  / | | \
             ∨i: |: : : : |: :ヽ| |::∩::| ::::::::::::::::  !.::∪::::::| |: : :i : : : : : : ′            ,ィ /〉
               |: |: : i : :', : |  |::∪::| ::::::::::::::::  !: : : : : :||: : i : : : : : : : :,          / レ厶イ
                ヽハ: : :、: :ヽ|  l : : : |:::::  ,  ::::└――┘ ! : : i : : : : : : : ′        /   ⊂ニ、
                い、: :\/   ̄ ̄                 ', : : i : : : : : : : : ,     _, -‐'    ⊂ニ,´
    r 、  _          ヽ: :〈        <  ̄ フ         |: : : ! : : : : : : : :′,.-‐T   _,. -‐'´ ̄
    くヾ; U|           | : \                   /| : : :i : : : : :_, -‐'    |  /
   r―'   ヽ、             | : : : \               イ: : :| : : :i_,. -‐       |/
    `つ _   ̄ ̄Τ`ー―-- L: : : : : `: : . . .  __    .:〔: : :|: : :r┬'              |


394 名前:デフォルトの名無しさん [2012/05/27(日) 19:45:53.79 ]
このスレはC++/CLIもやってるの?

395 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 19:49:06.86 ]
共通の話題なら扱うだろうけどCLI固有の話となるとご遠慮願いたい。

396 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 20:20:49.72 ]
CLIはこっちか
初心者用しかないのが気にはなるが

くだすれC++/CLI(初心者用)part2
toro.2ch.net/test/read.cgi/tech/1268613679/

397 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 21:00:36.93 ]
初心者といっても、C++/CLI初心者にはC++と.NETの両方とも中級以上が必須だぜ
向こうはC++/CLIに固有の内容以外(C++や.NETの基礎知識)は基本的にスレチだし

398 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 21:42:40.23 ]
int main()
{
 int *array = new int[0];
 delete[] array;
 return 0;
}
Visual Studio 2008搭載のコンパイラーでこのコード走らせると
異常終了してた気がするけど、もし異常終了したらバグじゃね?
仕様として正常終了と異常終了どっちが正しいんだ?

399 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 21:58:07.72 ]
>>398
new が失敗→ bad_alloc → terminate() → abort() という可能性はあるが、
現実に VS が対象としてる Windows 環境でそうなることは考えづらいな。



400 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 22:00:21.06 ]
>>390
メモリー不足→new_handler作動→リザーブが足りない→newが例外→直前にnewで確保したメモリーがリーク

もしくは、
メモリー不足→new_handler作動→リザーブが足りない→newが例外を出さない→newが0を返す?→異常終了

メモリーリークとnewが例外出す以前は全く関係ない






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<202KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef