C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 結果を受ける変数のコンストラクタ・デストラクタについて


(過去ログ 55 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■31215 / inTopicNo.1)  結果を受ける変数のコンストラクタ・デストラクタについて
  
□投稿者/ 凪 (17回)-(2009/01/16(Fri) 18:11:14)

分類:[C/C++] 

WinXP
VC++2003

只今VC++の勉強中です。変数のコンストラクタについて質問させてください。
まず、下記のようなコンストラクタ(New)・デストラクタを使う方法があると思います。

char *a;
a = new char[10];

delete[] a;

この方法を使う場合、まず初期化時のサイズがわかっていない場合はどのように対処すればいいのでしょう?
例えば、findの結果を受ける場合など。
受けるまでサイズがわからない時の方法がありましたら教えてください。
この方法がわからないと、メモリ違反でdelete[]でコケてしまいます^^;
色々なサイトを見ても、findやstrstr等の例は載っているのですが、肝心の初期化が中々載っていません。
もしかして、find等の結果を受ける場合はアドレスを受けるだけなのでコンストラクタ・デストラクタの必要がないのでしょうか?

以上、宜しくお願いします。
引用返信 編集キー/
■31216 / inTopicNo.2)  Re[1]: 結果を受ける変数のコンストラクタ・デストラクタについて
□投稿者/ 774RR (287回)-(2009/01/16(Fri) 18:34:40)
うーん。
他人の説明を(しかも掲示板で文字だけの形で)聞くより、なにかいい書籍や Web で
「ポインタって何」「配列って何」
「ポインタと配列の違い」
ってあたりをきっちり理解しておくべきだと思うぞ・・・
説明しろ、っつーなら、いくらでもするけど。

find っつーのは 標準C++ の std::find のことかな?
ならば、超変則的な使い方をしない限り結果用の new をする必要は無い。

find(すでに存在する領域の開始位置, すでに存在する領域の終了位置, 探す条件) として呼び出し
見つかったら、その(すでに存在する領域中で)見つけた位置
見つからなかったら、終了位置
を返すわけだから。 strstr も同等。
引用返信 編集キー/
■31218 / inTopicNo.3)  Re[1]: 結果を受ける変数のコンストラクタ・デストラクタについて
□投稿者/ .SHO (541回)-(2009/01/16(Fri) 19:38:45)
No31215 (凪 さん) に返信

> この方法がわからないと、メモリ違反でdelete[]でコケてしまいます^^;

なんで、deleteでコケるのかを考えてみてはどうでしょう?
new した時の a の値と delete に渡す a の値は同じじゃないとコケますよね。
find した後の a の値はどうなります?
引用返信 編集キー/
■31219 / inTopicNo.4)  Re[2]: 結果を受ける変数のコンストラクタ・デストラクタについて
□投稿者/ επιστημη (1538回)-(2009/01/16(Fri) 19:50:20)
επιστημη さんの Web サイト
...なんかとてつもない思い違いしてるよな希ガス。

引用返信 編集キー/
■31220 / inTopicNo.5)  Re[3]: 結果を受ける変数のコンストラクタ・デストラクタについて
□投稿者/ 凪 (18回)-(2009/01/16(Fri) 20:55:43)
皆様

いつもお世話になっています。

自分もなんかとてつもない思い違いしてるよな希ガスので明日本屋に行ってみようと思います^^;

一応、本屋に行って納得できるまではまだ未解決のままとさせていただきますm(__)m
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -