4

私はこのコードを(関数内にabc)持っています

matriz = new (nothrow) int*[qnt_objetos]; 
if (matriz == 0)
     exit(0);

for (int i = 0; i < qnt_objetos; i++)
{
    matriz[i] = new (nothrow) int[tam_mochila];
    if (matriz[i] == 0)
        exit(0);
}

matrizそのように宣言された2次元配列です(メインで)

int **matriz = NULL;

newただし、演​​算子を使用する場合、メモリスペースは割り当てられません。私が間違っているのは何ですか?また、main関数に直接メモリを割り当てる方が良いですか?それはコードをより読みにくくしませんか?

PS:NetBeans(またはターミナルを使用)でデバッグすると、matrizアドレス= 0x0NULL間違っていない場合)になります

4

2 に答える 2

3

これは、新しい操作が静かに失敗し (nothrow)、NULL を返すことを意味します。どのくらいのメモリを割り当てていますか?

于 2012-10-09T02:48:29.643 に答える
0

コードブロックでG ++を使用してコンパイルおよび実行しました。何の問題もなく問題なく動きました。アロケータが適切な値を持っていることを確認するために、いくつかのエラー チェックを提供する必要があります (つまり、-1 を受け取った unsigned long)。そのため、バッファがどのくらい大きくなるかを必ず確認してください。

于 2012-10-09T02:51:54.577 に答える