|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.06.2011, 20:41 | #1 |
Регистрация: 31.05.2011
Сообщений: 7
|
Динамический массив структур в Си
Не могу решить следующую задачу:
Есть структура student (фамилии, оценки, курс...) . Есть массив этих структур.Создаю функцию записи в массив. Код:
ОС Windows инициировала точку останова в FINAL.exe. Это может быть вызвано повреждением кучи и указывает на ошибку в FINAL.exe или в одной из загруженных им DLL. Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит FINAL.exe отладчик сообщает что переменная p2 неправильный указатель. Последний раз редактировалось ACE Valery; 03.06.2011 в 15:37. |
02.06.2011, 22:09 | #2 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
03.06.2011, 19:37 | #3 |
Регистрация: 31.05.2011
Сообщений: 7
|
Не совсем так. Отладчик останавливается на строчке
p2=realloc(p,(n+1)*sizeof(*p)); указывая, что p2 - неправильный указатель. По идее указателю p2 присваивается значение увеличенного массива, а потом проверка идти должна... Но на этой строе стопор. |
03.06.2011, 19:48 | #4 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Покажите код, где вызывается эта функция.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
03.06.2011, 21:29 | #5 |
Регистрация: 31.05.2011
Сообщений: 7
|
Здесь идет описание массива ссылок на функции функции
//main.c Код:
Последний раз редактировалось ACE Valery; 04.06.2011 в 14:56. |
03.06.2011, 21:37 | #6 |
Регистрация: 31.05.2011
Сообщений: 7
|
Ну и собственно student.c
#include"student.h" Код:
|
03.06.2011, 21:42 | #7 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Пробежал взглядом, единственное, что бросилось в глаза - это неинициализированный указатель strudent *p, который вы передаете этой функции. Это так? Ведь она с ним уже дальше страшные вещи делает, разыменует, например.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
03.06.2011, 22:42 | #8 |
Регистрация: 31.05.2011
Сообщений: 7
|
Другие функции тоже используют этот указатель... Тем не менее распечатать удается... Программу клинит при попытке увеличить длину массива realloc почему то не работает...
|
03.06.2011, 22:50 | #9 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Так вы же realloc'чите статический массив.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
04.06.2011, 23:45 | #10 |
Регистрация: 31.05.2011
Сообщений: 7
|
Спасибо..
Спасибо.. Дошло... Не буду задавать глупых вопросов типа :"а как написать?" Попробую сам.. Главное понял ошибку.Учусь я ..
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ввод структур в динамический список | Mahin | Общие вопросы C/C++ | 4 | 20.04.2011 10:30 |
Как ввести данные в динамический массив структур? | sunplant | Общие вопросы C/C++ | 6 | 28.01.2011 17:10 |
Динамический массив структур | RaZveDchiK | Помощь студентам | 1 | 31.08.2008 21:44 |
Динамический массив структур | Kostyakovich | Помощь студентам | 4 | 20.04.2008 21:59 |