Новое не выделяет память?

У меня есть этот кусок кода (в функции 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 двумерный массив, объявленный как таковой (на главной)

int **matriz = NULL;

Однако пространство памяти не выделяется при использовании new оператор. Что я делаю не так? А также, лучше ли выделять память прямо в main функционировать? Разве это не делает код более неразборчивым?

PS: отладка на NetBeans (или с терминалом) я понял matriz адрес = 0x0 (NULL если я не ошибаюсь)

4

Решение

Это означает, что новая операция завершилась неудачно (nothrow), и возвращает NULL, сколько памяти вы выделяете?

3

Другие решения

Я скомпилировал и запустил его с G ++ в кодовых блоках. Это работало очень хорошо без каких-либо проблем.
Вы должны обеспечить некоторую проверку ошибок, чтобы убедиться, что распределители имеют правильное значение, которое не является смехотворно большим (IE: длинная без знака, получившая -1).
Поэтому не забудьте проверить, насколько большим будет буфер.

0

По вопросам рекламы [email protected]