我有这段代码(在函数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
地址= 0x0
(NULL
如果我没有记错的话)
答案 0 :(得分:3)
这意味着新操作安静地失败(nothrow),并且返回NULL,你分配了多少内存?
答案 1 :(得分:0)
我在代码块中使用G ++编译并运行它。它运行得很好,没有任何问题。 您应该提供一些错误检查,以确保分配器具有非常大的正确值(IE:接收到-1的无符号长整数)。 所以一定要检查缓冲区的大小。