新不分配内存?

时间:2012-10-09 02:43:59

标签: c++ pointers new-operator

我有这段代码(在函数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是一个二维数组(在main上声明)

int **matriz = NULL;

但是,使用new运算符时,内存空间不会分配。我做错了什么?而且,直接在main函数中分配内存是否更好?这不会使代码更加难以辨认吗?

PS:在NetBeans(或终端)上调试它我得到matriz地址= 0x0NULL如果我没有记错的话)

2 个答案:

答案 0 :(得分:3)

这意味着新操作安静地失败(nothrow),并且返回NULL,你分配了多少内存?

答案 1 :(得分:0)

我在代码块中使用G ++编译并运行它。它运行得很好,没有任何问题。 您应该提供一些错误检查,以确保分配器具有非常大的正确值(IE:接收到-1的无符号长整数)。  所以一定要检查缓冲区的大小。