У меня есть этот кусок кода (в функции 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
если я не ошибаюсь)
Это означает, что новая операция завершилась неудачно (nothrow), и возвращает NULL, сколько памяти вы выделяете?
Я скомпилировал и запустил его с G ++ в кодовых блоках. Это работало очень хорошо без каких-либо проблем.
Вы должны обеспечить некоторую проверку ошибок, чтобы убедиться, что распределители имеют правильное значение, которое не является смехотворно большим (IE: длинная без знака, получившая -1).
Поэтому не забудьте проверить, насколько большим будет буфер.