プロが教えるわが家の防犯対策術!

こんにちは
C++のプログラムで
構造体 KOUZOUTAIの領域をx個分確保したいと思っています。
構造体のメンバにはポインタは使われていません。
KOUZOUTAI *kouzoutai1;
int count = 5;
kouzoutai1 = new KOUZOUTAI[count];
delete[] kouzoutai1;
CLASSを使用していませんが、問題ないでしょうか?

A 回答 (3件)

可能です。

class の有無とは無関係です。
(C++ では struct も class の一種でほぼ同じものです)

念のため補足するなら、言語規格上メモリ確保に失敗すると std::bac_alloc 例外が発生するので、どこかでこれを catch してあげてください。
# 古いコンパイラはともかく、きょうびのコンパイラは
# kouzoutai1 の NULL チェックなどをする前に例外が起きますので、
# catch していないと実行時エラーでプログラムが落ちます。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。
元々Cで書かれていたソースを
C++にしたのですが
mallocよりもnewを使ったほうが安全だということで
(いくつかのC++の参考書などにC++ではmallocではなくnewを
使用すべきとあったので・・・)
newを使ったのですが今ひとつ自信がもてなかったもので
質問させていただきました。
どうもありがとうございました。

お礼日時:2006/05/18 19:45

#2です。



class とかの場合とか、malloc はコンストラクタが呼ばれない(自分で配置newが必要)などの問題がでますが、提示の例ではそのあたりの問題はなく。
キャストのない型保証などがnewの有利な点ですね。

既に書きましたが、new の失敗はCのようなNULLチェックができないことが注意でしょうか。
try{
.....確保など
}catch(std::bad_alloc& x)
{
// メモリ確保に失敗するとここに来る。
}
    • good
    • 0
この回答へのお礼

失敗時の処理についてもお教えいただき、大変助かりました。
本当にどうもありがとうございました(^^)

お礼日時:2006/05/18 23:34

問題ない。



……多分。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございました(^^)

お礼日時:2006/05/18 23:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!