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是这样声明的二维数组(在 main 上)

int **matriz = NULL;

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

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

4

2 回答 2

3

这意味着新操作悄然失败(nothrow),并返回 NULL,您分配了多少内存?

于 2012-10-09T02:48:29.643 回答
0

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

于 2012-10-09T02:51:54.577 回答