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

int *np;
とあり、ある関数の中で
np = new int[NUM];
としています。

現在、このnpがnewされているか知りたい時はどうすればよいのでしょう?

うまく表現できずに申し訳ありません。

A 回答 (3件)

try


{
 np = new int[NUM];
 // newされている
}
catch(std::bad_alloc& e)
{
 // new失敗
}

ですね。返却値で調べたい場合は、

np = new(std::nothrow) int[NUM];
if (np != 0)
{
 // newされている
}
else
{
 // new失敗
}

のようにします。

newした地点から離れたところでは、一般的には知る方法がないので、正当なオブジェクトを指していないときは常にポインタの値を0にしておくように徹底するか、それが面倒ならスマートポインタを使うのが一番です。
    • good
    • 0

不安な場合には、デバッグモードに入り、ステップ実行してみるとよいでしょう。


newはC++固有の演算子ですから、ステップ実行してみると、(VC++の場合)その過程でCのmalloc関数が呼び出されることを確認できると思います。

参考URL:http://www.ttoyota.com/freetutorial/cppnovice16. …
    • good
    • 0

int *np;


np = new int[NUM];
if(np == NULL)
{
//失敗
}
else
{
//成功
}

こんなかんでしょうか。
    • good
    • 0

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