Поясните мне мою ошибку в данной функции на выделение памяти.
Как только доходит до строчки 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
для этих указателей.
В функции используются непонятные "магические числа".
Лучше функцию написать таким образом. чтобы она имела дело только с одним указателем, и для каждого указателя вызывать ее отдельно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день! У меня имеется статический метод listOfStudents() который открывает текстовый файл и считывает оттуда мои данные
В чем ошибка?задание вычисление функции разложения в рядво внутреннем цикле значение суммы ТЕКСТ ЗАДАНИЯ
Пишу инсталлятор, который, как принято, должен создавать ярлык на рабочем столе и группу в меню ПускНаходил в сети много вариантов одной и той...