Поясните мне мою ошибку в данной функции на выделение памяти.
Как только доходит до строчки numb[i] = new char[50];
- сразу ошибка и в отладчике пишет что чтение памяти невозможно.
**cont i
**numb
абсолютно две идентичные переменные (в дальнейшем это должна быть телефонная книга). Один массив отвечает за имена, второй за номера
void Memory(char**&cont, char**&numb, int q)
{
cont = new char*[q];
for (int i = 0; i < 2; i++)
{
cont[i] = new char[50];
}
for (int i = 0; i < 2; i++)
{
numb[i] = new char[50];
}
}
Возможно, что для указателя numb
вы забыли выделить память, как, например
numb = new char*[q];
Ваша функция могла бы выглядеть следующим лобразом
void Memory( char ** &cont, char ** &numb, int q )
{
cont = new char *[q];
for ( int i = 0; i < q; i++ )
{
cont[i] = new char[50];
}
numb = new char *[q];
for (int i = 0; i < q; i++)
{
numb[i] = new char[50];
}
}
Хотя интерфейс этой функции очень неясный. Например, могут ли указатели, переданные в функцию, уже указывать на выделенную ранее память? То есть должен ли в начале вызываться оператор delete
для этих указателей.
В функции используются непонятные "магические числа".
Лучше функцию написать таким образом. чтобы она имела дело только с одним указателем, и для каждого указателя вызывать ее отдельно.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день! У меня имеется статический метод listOfStudents() который открывает текстовый файл и считывает оттуда мои данные
В чем ошибка?задание вычисление функции разложения в рядво внутреннем цикле значение суммы ТЕКСТ ЗАДАНИЯ
Пишу инсталлятор, который, как принято, должен создавать ярлык на рабочем столе и группу в меню ПускНаходил в сети много вариантов одной и той...