0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 4
|
||||||
1 | ||||||
Динамическое выделение для массива структур. Программа вылетает без ошибок на использовании функции realloc03.05.2014, 21:31. Показов 2573. Ответов 4
Метки нет Все метки)
(
Здесь код: ссылка
В массив структур нужно записать новый элемент, выделить для него память. Функция выглядит так:
Дело в том, что после второго использования resize программа вылетает без ошибок на использовании функции realloc. Вторая проблема в том, что после добавления и инициализации второго элемента массива(одно использование realloc) структура(которая и является этим вторым элементом) не записывается корректно, хотя при отладке видно, что всё нормально. А при использовании free() на bd программа, опять же, вылетает, хотя указатель bd и был инициализирован с помощью malloc. Как это исправить? В чём проблема? Я думал, что неправильно использую realloc, но видел пример увеличивающегося массива, где всё точно так же (плюс функция free).
0
|
|
03.05.2014, 21:31 | |
Ответы с готовыми решениями:
4
При расширении первой строки двумерного массива (с помощью realloc) программа вылетает Программа вылетает без ошибок
|
03.05.2014, 23:26 | 2 | |||||||||||||||
Функция count_line() всегда будет возвращать 0.
0
|
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 4
|
|
03.05.2014, 23:58 [ТС] | 3 |
Нет. При отладке можно видеть, что она возвращает при выборе пункта меню (1) сначала 0, потом 1, потом 2 (где потом программа и закрывается на функции resize). Да и это можно видеть по надписи "запись добавлена под номером .."
А значение элемента deleted меняется с "deleted" на "works" в функции add_line после switch. Сори, что нет комментариев.
0
|
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 4
|
|
04.05.2014, 00:22 [ТС] | 5 |
Я разобрался. Всего-то надо было погуглить на английском.
Проблема была в том, что нельзя изменять внутри функции значение объектов, на которые ссылаются передаваемые функции указатели. Чтобы их изменить, нужно передавать указатели на указатели. Так например, в функции resize будет тройной указатель, который приходит из функции add_line, где указатель двойной. Такие дела.
0
|
04.05.2014, 00:22 | |
Помогаю со студенческими работами здесь
5
Динамическое распределение памяти: программа, вылетает на вводе непосредственно первого элемента массива
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |