C++相談室 part135

■ このスレッドは過去ログ倉庫に格納されています
2018/03/31(土) 20:20:06.25ID:o3PNwIlC0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part134
http://mevius.5ch.net/test/read.cgi/tech/1516406742/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/04/28(土) 08:04:07.12ID:zm4OWgENM
>>418
>ファイル名で識別
過去遺産をすっぱり切り捨てる斬新な発想に目から鱗
2018/04/28(土) 08:05:18.62ID:BHnoJcFn0
>>423
藻前は>>418の仕様の項番4を理解していない
出直せ
2018/04/28(土) 08:15:15.14ID:zm4OWgENM
今後ヘッダファイル名にはドメイン名を頭につけなきゃいけないね。
メアドでもいいかな?
2018/04/28(土) 08:20:58.21ID:amQJLuCm0
>>417
適当な処理系の言語リファレンス見ればいいだけ
そんなに難しくはないぞ
2018/04/28(土) 08:24:01.11ID:WRqkde3l0
>>422
420が提起した問題に答えろ
kwskはそれからだ
428デフォルトの名無しさん
垢版 |
2018/04/28(土) 08:33:55.15
>>427
是非は置いといて、ファイル名で識別するって書いてあるじゃん
文盲なの?
2018/04/28(土) 09:13:26.88ID:clK1o5V+0
つまりfooSDK/interface.hとbarSDK/interface.hは同一として判定するんだな
たいへんだー
2018/04/28(土) 09:22:50.78ID:WRqkde3l0
結論を急ぐあまり考察が浅くなりすぎだな
2018/04/28(土) 09:23:37.16ID:ibkTuaSK0
#pragma onceの前に改行があったらエラーですかwww
2018/04/28(土) 09:27:57.75ID:amQJLuCm0
>>420
それ単に管理がなってないだけだろ
どのバージョンのヘッダーを読み込むかを管理できてないとか怖すぎる
2018/04/28(土) 09:34:33.18ID:WRqkde3l0
>>432
どう管理しろと?

混用しているライブラリに偶然同じファイル名があって
どちらもインクルードガードされているということを
「管理」で回避できるのか?
2018/04/28(土) 09:42:57.08ID:zm4OWgENM
>>432
えー、cvs keywordはどうするのー?
サブモジュールを格納してたリポジトリ毎に値が異なるよ?
自動的に改行コードを修正してくれるリポジトリの場合はー?
2018/04/28(土) 09:45:12.10ID:ibkTuaSK0
まずは世の中のプリプロセッサのpragma onceの仕様がどうなっているかを調べるべきかと
2018/04/28(土) 09:54:13.99ID:EXYGb8MJ0
具体的な話になったら一気にレベル下がったなw
2018/04/28(土) 10:21:03.59ID:amQJLuCm0
>>433
話の流れを理解せずに無駄に絡んでくるなよ...
インクルードガードならとりあえずビルドできるって言う話だぞ

>>434
同一のSDKなんだから同一のものを指すようにすればいいだけだろ
2018/04/28(土) 10:24:05.76ID:ibkTuaSK0
目的は
インクルードのループを防ぎたいのと
同じ定義を複数回行うことでエラーになるのを防ぎたい
ってことだよな

これをインテリジェントに行ってくれるのが理想

インテリジェントな物を仕様にするのは難しいし、
時代が進めばインテリジェント具合も変わる

>>418みたいなあまりにショボい仕様だと
後々不満が出ることになる
2018/04/28(土) 10:28:01.67ID:WRqkde3l0
>>437
答えになってないぞ
今 #pragma once について話しているよな
インクルードガードを #pragma once でやっていたらどうなんだ
2018/04/28(土) 10:28:57.76ID:BHnoJcFn0
>>429
>>434
現行のヘッダファイルでうまく行っているのならそのままでええ(>>418項番4はそのためにある
そうではなくて、もしも(例えば)マイクロソフトのVisual C++の#pragma onceを使って書かれた過去の遺産の尊重が大事なら
そのときは>>418の方の#pragma onceを#pragma once2とかに代えれば良いが
そりゃー(例えば)マイクロソフトのVisual C++の#pragma onceが先行して規格になった後の話なので今は無視

>>435
 >417からの流れと考え合わせるに、
「僕ちゃんの考えた理想の#pragma onceじゃないと嫌なの!!!>418のクソ単純な仕様は正しくとも認められん!!!」ってことですかそうですか…
なお>>431の指摘は評価する

>>436
抽象的な言い回しで無意味に高尚な議論に見せかけている連中の方が多数派
空っぽなのに…
2018/04/28(土) 10:29:34.95ID:ibkTuaSK0
当然互換性の問題もある
今まで動いていたものが正しく動かなくなるのであれば支持されない
だから>>435も非常に重要
2018/04/28(土) 10:33:35.22ID:BHnoJcFn0
>>441
時間差だったかもしれんが>>440の最初のパラグラフ参照

存在しない規格との互換性の問題を喚かないでいただきたい、というのはあるが
回避策も示しているのだからオール無問題
2018/04/28(土) 10:33:47.48ID:ibkTuaSK0
>>429の例で
2重インクルードを防ぎたい場合とそれぞれ別にインクルードしたい場合があるってのは書かなくてもわかるよな

中身が全く同じであれば防ぎたいし
全く別の定義であればそれそれぞれをインクルードしたい
2018/04/28(土) 10:35:03.59ID:ibkTuaSK0
>>442
#pragma onceの仕様はVisual C++しか実装してないと思ってる?
2018/04/28(土) 10:38:47.00ID:BHnoJcFn0
>>443
>>444
>2重インクルードを防ぎたい場合とそれぞれ別にインクルードしたい場合があるってのは書かなくてもわかるよな
ああ>>443の脳内にはそういう要求もあるんですねわかります
その場合は>>418項番4でドゾー

藻前ら>>418の単純さをバカにするが藻前らの論理展開のアレっぷりも相当なもんやぞ…
2018/04/28(土) 10:42:05.24ID:ibkTuaSK0
いずれにしろ>>418みたいなチープな仕様じゃ誰にも支持されない
2018/04/28(土) 10:45:00.58ID:WRqkde3l0
ツッコミ殺到でボコボコなのに勝利宣言してやがるな
つっこんだ人たち(ここのほぼ全員)にバレバレなのに滑稽な
2018/04/28(土) 11:10:27.31ID:ueAKslGb0
>>418,421はミニマムの仕様を提示しただけで、つまり、
この仕様で問題ない場合は #pragma once で手抜きが出来て、
無理な場合は従来通りインクルードガード使えってことだろ。

俺はありだと思うぜ。仕様ってのはこういう割り切り方をしないと決まらない。
C++のラムダなんて後付で仕様を拡張して行っているし。(このやり方がいいとは思わないが)
ただ、この仕様だと現行の #pragma once よりも割り切っているのがイマイチで、
「今」この仕様では却下されるだろう。
「#pragma once が全くない世界」なら、とりあえずここから出発するのもありだっただろう。

現行の #pragma once は常識的に考えて、
・ファイル実体が同じ場合(ハードリンク/シンボリックリンク)は対応可能
・コピーの場合(ローカルに xxx.h を tmp_xxx.h にしてデバッグ出力を改変したり)には対応不能
だろう。だから使用条件としては、
・全ファイルがローカルファイルシステム上にあり、ヘッダファイルの改変は行わない
であり、普通に個人レベルで開発する場合はこれで全く問題ないし、妥当だ。
会社で10-20人レベルで開発する場合、どのみちルールを子細に決めることになるし、
そういう場合は従来のインクルードガードでやれ、という割り切りも妥当だよ。
2018/04/28(土) 11:11:35.35ID:ueAKslGb0
なお俺が推す仕様は、

・#pragma once のファイル内では複数定義のエラーを無視する

というものだ。従って、
・現行の#pragma once とは違い、対象ファイルは必ず「ファイルとしては」「読み込まれる」
(これは現行のインクルードガードとも同じ)
・定義されている物のシグネチャが既に存在するものと全く同一だった場合、無視する。
・シグネチャが異なっている場合、普通に読み込む(コンパイル対象とする)
(勝手にデバッグ関数を追加されていた場合、その関数だけはコンパイルされる)
・#pragma once のファイルを全部パースし終わった際、「全部重複」「全部新規」ではなかった場合、警告を出す。
(正しく使えば「全部重複」「全部新規」のどちらかになる。
改変《追加》した場合は「一部新規」となり、警告にする。「一部欠落」は検知しない。)
というものだ。

この場合、要するに「読み込んで同じだったら無視」なので、
#ifdef 内等、かなりアクロバティックに使われても、問題なく、使用者の直感通りに動作する。
改行の追加、コメント変更等は全く問題ない。
ただし常に全部のファイルを読み込み、初段階のパースは行うことになるので、
現行の #pragma once やインクルードガードよりは速度は劣る。
とはいえ、今更ここが問題になる時代ではないし、問題になるようならインクルードガードを使えと割り切る。
つまり、面倒なら #include を使わずに、全部 #pragma once にも出来る、というもので、
実際これで問題無いと思うんだがな。
2018/04/28(土) 11:15:31.75ID:aIENMcPWd
もう書かなくて良いよ
アホだってこはみんなわかったから
2018/04/28(土) 11:18:31.52ID:aIENMcPWd
ヒント
インクルードループ
2018/04/28(土) 11:22:35.75ID:aIENMcPWd
インクルードのネストがn段
それぞれの段、m個のインクルードファイルからm個インクルードしてるとします

何パス必要でしょう
2018/04/28(土) 12:14:39.04ID:wZlaoeXA0
>(ディレクトリパスは無視)

現行の#pragma onceでこんな実装になってる処理系あるかなぁ
2018/04/28(土) 12:22:28.92ID:amQJLuCm0
>>439
日本語で桶
2018/04/28(土) 12:24:23.32ID:amQJLuCm0
>>438, >>446
> >>418みたいなあまりにショボい仕様だと
> 後々不満が出ることになる

でも具体的には指摘できない
ってか w
2018/04/28(土) 12:26:40.87ID:aIENMcPWd
具体的にたくさんあがってるのが見えないのかな
2018/04/28(土) 12:51:19.85ID:NasUyYi90
プリプロセッサが諸悪の根源
2018/04/28(土) 12:51:48.61ID:NasUyYi90
#define多いと読む気しない
2018/04/28(土) 13:09:32.49ID:amQJLuCm0
>>456
レス番も引用もできないクズ乙 w
460デフォルトの名無しさん (ワッチョイ 9391-/P+7)
垢版 |
2018/04/28(土) 14:18:44.28ID:0IOpQOT30
static変数(クラスのインスタンス)がプログラム実行時にそのメンバ関数呼び出し時にその中で、
newをすると既存のヒープ領域を破壊することはありますか?
どうもこのように解釈できる現象が起きているようなのですが、調べても分からずアドバイスを頂ければ幸いです。
環境はMacのHighSierra、コンパイラはbrewから持ってきたLLVMです。
2018/04/28(土) 16:33:32.77ID:ueAKslGb0
>>460
99%以上の確率であなたのバグです。
1行目の意味はよく分かりませんが。
2018/04/28(土) 16:51:34.89ID:ueAKslGb0
ああすまん、何となく1行目の意味は分かった。

・クラスインスタンスをstatic変数に入れ、そのメソッドを呼んだ

事をそう表現したのかな?
だったらはっきり言ってstatic云々関係ない。
GCなんて無いから「statc変数に入れたら忘れてGCされてしまう」みたいなことはそもそも無い。
ヒープを壊しているのはユーザーです。つーか、ランタイムもないし。


ガチでコンパイラのバグだと思っているのなら、
どのみち再現コード(その場合は20行程度か)を作るしかない。
その過程で君のバグだと気づけるだろうさ。
ただこのように「下から」デバッグをするのは時間がかかるから、俺は嫌いだけど、
君がそう思うのならやるしかない。
C/C++は広く長く使われて来ている言語だから、
現在もバリバリに使われているコンパイラなら、この辺の基本的な部分にバグは無いと思うよ。
static変数に確保するのはマイナーかもしれないが、滅多にやらないってほどではないし、
そもそも上記の通り、コンパイラにとって危険のある(バグに命中する可能性のある)使い方でもない。
2018/04/28(土) 16:59:13.74ID:9z8isRDe0
>>460
破壊って何?
2018/04/28(土) 17:20:06.35ID:aIENMcPWd
ふつうに、
クラスのインスタンスがstatic宣言と読んだけだ

static MyClass a;

スコープローカルかファイルローカルかはわからん
2018/04/28(土) 17:29:35.84ID:ueAKslGb0
>>450
>>464
日本語でおk
お前は半島に帰れ

>>452
それでお前は何パスだと思うのさ?

予言してやる。お前は言えない。
なぜならお前は馬鹿であり、それがばれるのが怖いから。
2018/04/28(土) 17:46:24.07ID:aIENMcPWd
おれは数学の専門家だぞ
わからないわけがない
2018/04/28(土) 17:46:53.04ID:aIENMcPWd
なぜ問題を出したのか考えてみ
2018/04/28(土) 18:39:11.84ID:ueAKslGb0
ひとまず俺の一つ目の予言は的中だな。
次に行こう。

>>467
ID:aIENMcPWd
お前の日本語の間違いをすべて訂正してみろ。

2つ目の予言をする。お前は言えない。
なぜならお前はゴキブリ韓国人であり、間違いを認識できていないから。
2018/04/29(日) 02:23:46.17ID:UY96NiMha
C++でプラットフォームに依存しない音楽再生ライブラリってある?特にlinuxで使いたいんだけど。
mpg123とかいうのもみてみたんだけどプログラムに組み込むやり方が分からない
2018/04/29(日) 02:25:23.22ID:kTR2ZRC/0
MIDAS
2018/04/29(日) 07:28:51.71ID:riHNUW7H0
Gstreamer
2018/04/29(日) 10:01:20.67ID:4Txko8z40
質問ですが
Q1.
浮動小数点型について表現しえる最小の値(負の値のうちの絶対値が最大のやつ)を取得する
環境非依存なやり方はどうすれば良いの?
-std::numeric_limits<double>::max()とか
-DBL_MAX
でおk?

Q2.
テンプレートを型引数が整数型と浮動小数点型で分けたいんですが
同じ名前のテンプレート名のまま、テンプレートの特殊化的な簡単に済ませる方法は無い?
2018/04/29(日) 10:55:07.91ID:6B047Ccs0
>Q2
template <typename T, bool = std::is_floating_point<T>::value>
struct hoge {};
template <typename T>
struct hoge<T, true> {};
2018/04/29(日) 11:05:23.85ID:iHQcqnOH0
>>472
>Q2.
こういう事?
https://ideone.com/oWzlMP
2018/04/29(日) 13:22:08.35ID:WuAwAiPA0
>>472
std::numeric_limits<double>::lowest()
2018/04/29(日) 13:56:48.76ID:4Txko8z40
まりがとうございます
>>473
>>475
すばらっし

>>474
言葉足らずでスマンカッタorz
具体的型名で特殊化する普通の特殊化ではfloatとdoubleのそれぞれについて特殊化した定義を与えねばならないので
>>473みたいなやつを求めていたのです!ヽ(>∀<)ノ!!!111!1!
2018/04/29(日) 15:24:36.24ID:AQKaesvCd
たまにはlong doubleも思い出してあげてください
2018/04/30(月) 23:11:41.90ID:xhvNrk1GM
Boost.Optionalを使う際に、
対象クラスが自分自身の有効無効を変更できるようにしようとしてみたところ、
宣言時に宣言対象を引数にとって初期化できることに気づきました。

変数の引数に変数自身を使うのは仕様的にありなのでしょうか?
ttps://wandbox.org/permlink/YLKYol7KdEOhpyGU
2018/04/30(月) 23:32:18.45ID:9aMn2TSu0
ポインタか参照なら問題ない
中身は使えない
2018/05/01(火) 23:40:40.03ID:dOOCYV+Z0
CObject obj;

for(i=0; i<N; i++)
{
obj = new CObject();
・・・(処理)・・・
}

↑みたいにdeleteせずにnew演算子でクラスオブジェクトを割り振り続けるプログラムってお行儀悪い?

CObject obj;

for(i=0; i<N; i++)
{
obj = new CObject();
・・・(処理)・・・
delete(obj);
}

↑こういうふうにすべき? 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
2018/05/01(火) 23:49:10.85ID:+P0DkpYu0
unique_ptr使うべき
2018/05/01(火) 23:54:52.50ID:2ADD+YWD0
今時newなんかを自分で書いてることに疑問を持ったほうがいい
2018/05/01(火) 23:55:37.66ID:b3AAvo5J0
>>480
お行儀の次元の話じゃない
2018/05/02(水) 00:01:31.48ID:LLl+2Gg10
手っ取り早く動かしたいその場限りのコードならそういうことをやることもある

くらいかな
2018/05/02(水) 00:09:49.83ID:HN9ze8O60
ビンラディン並みのテロリストだな
2018/05/02(水) 00:09:55.64ID:MK7npuGj0
そんなにお行儀悪いんでつか(´;ω;`)・・・
2018/05/02(水) 00:43:03.85ID:VeqNn1690
そういうのやりたいならJavaやC#やれ
2018/05/02(水) 01:21:31.16ID:9riosu0F0
ポインタじゃないものにnewしたもの格納できるとでも思っているのかジャバグラマ上がりのトーシロー
2018/05/02(水) 01:32:41.73ID:G9KSYPOz0
なんでdeleteしなくていいと思ったんや
2018/05/02(水) 01:39:46.98ID:HN9ze8O60
釣りだと思う
2018/05/02(水) 03:44:38.96ID:MK7npuGj0
deleteしてからnewすることにします・・・

>>488
こうでしたorz

CObject* obj;
2018/05/02(水) 06:00:07.99ID:3K4Hzh4Z0
>>480
C++的には

for(i=0; i<N; i++)
{
 CObject obj;
 ・・・(処理)・・・
}

でいいんじゃね
2018/05/02(水) 10:02:54.88ID:EfCiDMro0
大規模なコードで大量にオブジェクト生成するならアリだと思うけど
その場合もnewしたものをdeleteするための仕組みは必須だしね
追跡できなくなる、もしくは自分で自分を破棄する仕組みも無いようではダメ
2018/05/02(水) 11:01:41.50ID:lsKTgXIy0
ライブラリに分ける利点ってなんですかね
2018/05/02(水) 14:44:29.23ID:MK7npuGj0
>>482
クラスのメンバ変数に他のクラスインスタンスを召喚するときとか
コンストラクタでnewしてやらないといけないと思うの
2018/05/02(水) 14:47:38.93ID:G9KSYPOz0
>>494
複数のプロジェクトで使いまわせる

>>495
スマポ(かコンテナ)で大体のnewは回避できる
そのケースも回避できる
497デフォルトの名無しさん
垢版 |
2018/05/02(水) 15:02:47.22
>>495
別にnewしなくてもよくね?
なんかサンプル出してみ?
new無くしてやっから
2018/05/02(水) 16:18:42.29ID:MK7npuGj0
>>497
class CTest
{
 CFoo cfoo;

 void CTest()
 {
  cfoo = new CFoo();
 }
};

こんなんとかどうでしょう
2018/05/02(水) 16:23:28.41ID:BwUG32HZa
>>498

class CTest
{
 CFoo cfoo;

 void CTest(): cfoo()
 {
 }
};


メンバ初期化子知らんのか
2018/05/02(水) 16:28:43.53ID:hqQx66t6a
山口メンバーも初期化できたらいいのに
2018/05/02(水) 16:29:15.41ID:9riosu0F0
ヤバいなジャバ上がりw
2018/05/02(水) 16:36:00.09ID:BwUG32HZa
ちなみに非PODならメンバ初期化子に書かなくてもデフォルトコンストラクタで初期化子される
503デフォルトの名無しさん
垢版 |
2018/05/02(水) 16:36:35.49
そもそも>>498の例なら初期化子自体いらんしw
2018/05/02(水) 17:10:02.19ID:MK7npuGj0
>>499
そ、そうやって初期化したcfooはdeleteしなくてもいいんでつか?
2018/05/02(水) 17:15:22.77ID:2RgXx2xAF
>>504
変数の寿命を理解してないのか?
C/C++で変数の寿命を理解せずコード書くとメモリリークだらけになるから止めるか横着せず勉強するかしてくれ
2018/05/02(水) 17:19:29.16ID:9riosu0F0
>>504
何言ってんだお前は
そもそもdelete出来んだろ
2018/05/02(水) 17:35:57.58ID:EH+UkdGd0
教えてください

やりたい事は ↓
https://stackoverflow.com/questions/14706954/how-to-override-the-text-displayed-for-a-property-in-the-propertygrid

ここに出てるようなPropertyGridで、数値配列の値を16進で表示したい
[0] 0x0001
[1] 0x0002
[2] 0x0003
....
例えば↑とか、単にこれだけ

そうとう調べまくったんだが、配列の例はみつけられなかった
配列でなければ、実装例は結構見つかるんだが・・・

一見簡単そうなんだけど、俺のレベルでは不可能
2018/05/02(水) 18:09:52.99ID:2RgXx2xAF
>>507
それC++の質問なの?
.NETのライブラリ(=>C++/CLI)じゃなくて?
2018/05/02(水) 18:25:45.38ID:EH+UkdGd0
いや、c# です
2018/05/02(水) 18:26:58.58ID:fs6yNkAId
>>509
スレ違い
2018/05/02(水) 18:29:31.79ID:EH+UkdGd0
ごめん間違えた、ここ C++のスレだった
隣で聞きます。
2018/05/02(水) 18:52:21.12ID:R3g8E+PO0
>>504
delete しなくてもいいのです
2018/05/02(水) 19:04:04.70ID:MK7npuGj0
>>505
>>506
>>512
み、みんな、親切にありがとう・・・
2018/05/02(水) 19:06:49.69ID:U7aQES8cr
>>494
一度に作る分量が減るので間違えにくい
別々の人間が手分けして作れる
2018/05/02(水) 20:14:18.27ID:sTDjib3HM
>>503
そもそも>>498はコンパイルエラー(もしくは警告)になるだろ...
class CTest
{
 CFoo* cfoo;

 CTest(int x){
  cfoo = new CFoo(x);
 }
 ~CTest(){
  delete cfoo;
 }
 void ReNew(int x){
  delete cfoo;
  cfoo = new CFoo(x);
 }
};
みたいな奴を想定してたのかも知らんけどこれでもunique_ptr使えば良いだけだしね
516デフォルトの名無しさん
垢版 |
2018/05/02(水) 23:29:42.51
どうせ>>498
CFoo cfoo;
はこれまた
CFoo *cfoo;
のつもりだったんだろう

とりあえず>>499の形にすればnewはなくせる
ポインタを保持したい場合も生ポインタはやめたほうがいいね
2018/05/02(水) 23:41:46.06ID:g0SlpjdS0
可能な限りスマートポインタを使え、そしてスマートポインタで駄目な場合はほとんどないってのはその通りなんだけど、
初心者が生ポインタをちゃんと理解したことのないままスマートポインタを使いこなせるとも思えぬ。
そこらへんはちゃんと分けて、今回の場合はまずは生ポインタを理解するという方向性で説明する場面じゃろ。
2018/05/02(水) 23:47:44.17ID:MK7npuGj0
>>516
>>499を仰ぎますm(_ _)m
2018/05/03(木) 00:10:52.91ID:XlBZHwDZ0
もうスマポはスマポとして理解させたほうがいいような気がするけどな
下手な生ポの知識は初心者に有害だ
2018/05/03(木) 01:53:27.71ID:OyWVOyw+0
ていうかコンストラクタだから返却値型いらんやん
2018/05/03(木) 02:06:40.03ID:jt77zXjA0
ポインターをdeleteせずに扱う猛者がいると聞いて駆け付けてきた
2018/05/03(木) 02:41:54.13ID:HFudy7bE0
delete をしない戦略ってのは無くはないよ。

アプリケーションの起動時直後にガッと大量のメモリを必要として、
終了直前に全部解放するってパターンなら、
どうせプロセスの終了と一緒にリソースは回収されるのでわざわざメモリ解放の処理を入れる必要はない。
(C++ だとデストラクタは必ずしもメモリを解放するだけではないので注意が必要だが)
だけどそういう戦略をとれるのはちゃんと理解した上で問題にならないことを確信できるだけの知識があってこそだわな。

というか、それ以上に、確保したのを解放しないのは「気持ち悪い」と感じる心が C/C++er にはある。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況