トップページ > プログラム > 2016年05月12日 > ehHa3Ia2

書き込み順位&時間帯一覧

32 位/207 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000020000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
C言語なら俺に聞け! Part 135©2ch.net

書き込みレス一覧

スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
720 :デフォルトの名無しさん[]:2016/05/12(木) 11:37:00.64 ID:ehHa3Ia2
delete: 削除対象のインスタンスは1つのみなので、ポインタが指しているオブジェクトのデストラクタを実行すればよい。
delete[]: 削除対象のインスタンスは配列になっているので、オブジェクトの配列そのものだけではなく、
何回デストラクタを実行すればよいのかを保存しておく必要がある。
delete[] はそれを参照して、繰り返しデストラクタを走らす。

なので、 new int[10] したものを delete で削除してもそもそもデストラクタが存在しないので、
問題が発生することはまずないが、デストラクタで何らかの処理(暗黙、明示的な)をおこなう場合、
本来実行されるべきデストラクタが走らず問題となることがある。
(よく言う delete[] を使うべきところで delete を使うと、リークすることがあるというやつだ)

>>719
new A[20] で確保されるのは A型20この配列で、結果はその配列へのポインタだろ。
これのどこに問題他あるんだ? (ポインタが配列なんじゃなく、ポインタが指す先が配列)

また delete ptr; というのは ptr 自体を delete するわけではなく、 ptr が持っているポインタが
指している先のオブジェクトを delete するんだよな。 delete[] ptr 自体を delete するわけではなく、
ptrが指しているオブジェクトの配列を削除する。

つりだとしても面白くなさ過ぎるからいい加減にしろ。
C言語なら俺に聞け! Part 135©2ch.net
23 :デフォルトの名無しさん[]:2016/05/12(木) 11:59:10.80 ID:ehHa3Ia2
言語自体は「はじめてのC」って本である程度覚えて、「K&R」。
初めて使うコンパイラなんかの場合、ライブラリのマニュアルも含め、精読してたな。

アルゴリズムとかは師匠のコード読んだり、教わったりしていた。
OSもない様な環境でのばりばりのハードウェア制御系だったから、一子相伝って感じだったな。
その後 OS 本体の仕事もやったりしたんで、非常によい経験になったと思う。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。