|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||||||
Не выполняется realloc03.06.2012, 13:35. Показов 4394. Ответов 20
Метки нет (Все метки)
Вообщем, не могу понять в чем ошибка, malloc() работает, а realloc() выдает ошибки. Имеется собственный тип item (структура, в которой два поля, типа char и int), вот тот самый realloc():
vector - указатель типа item size - кол-во элементов, для которых требуется место P.S. IDE - code::blocks OC Linux (Ubuntu)
0
|
||||||
| 03.06.2012, 13:35 | |
|
Ответы с готовыми решениями:
20
Код не выполняется в одном месте, но выполняется в другом Проект выполняется на Windows 8, но не выполняется на виртуальной машине не выполняется запрос в коде, но выполняется в phpliteadmin |
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
|
| 03.06.2012, 13:48 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||
| 03.06.2012, 14:00 [ТС] | ||
|
Добавлено через 4 минуты когда выходит ошибка: "invalid next size: 0x094b5178 ***" она указывает на адрес указателя "vector", может это как-то поможет разобраться в ошибке?!
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 03.06.2012, 14:09 | |
|
А как инициализировался указатель до realloc?
0
|
|
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||
| 03.06.2012, 14:12 [ТС] | ||
|
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||
| 03.06.2012, 14:17 | ||
|
realloc применяется только к инициализированному указателю... Или присваивайте ему изначально 0, или первый раз выделяйте память с помощью malloc или calloc.
Добавлено через 3 минуты
0
|
||
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||
| 03.06.2012, 14:17 [ТС] | ||
|
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 03.06.2012, 14:18 | |
|
Выложите весь код тогда уже, иначе мы так будем очень долго гадать
0
|
|
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||||||||||||||||||
| 03.06.2012, 14:52 [ТС] | ||||||||||||||||||
|
Добавлено через 5 минут "vector.h"
на самом деле ее нужно исключить, хотя всё равно работать не будет
0
|
||||||||||||||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||
| 03.06.2012, 15:07 | ||
|
Не по теме: За чтож Вас судить, это форум для помощи а не для суждения :) У Вас очень быстро растет размер, причем из ничего. При 12 символах в файле, размер увеличивается в конце до 5 314 410. Конечно, когда int переполняется, размер становится отрицательным, и поэтому realloc выдает ошибку. Я не смотрел полностью код, но ошибка в алгоритме перевыделения памяти. И вообще, увеличение размера в 3 раза это как то слишком.
0
|
||
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||
| 03.06.2012, 15:10 [ТС] | ||
|
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||
| 03.06.2012, 15:12 | ||
|
В fillNext у Вас выход за пределы массива
Добавлено через 1 минуту Да дело не в этом, просто даже при увеличении в 3 раза, при 12 символах размер в 5 миллионов какое то вообще не реальное число.
1
|
||
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
|
| 03.06.2012, 15:22 [ТС] | |
|
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 03.06.2012, 15:32 | |
|
Если Вы про выход за пределы массива, то это лишь часть проблемы. Потому что после ее исправления, память у меня так же съедалась, размер не изменился. При каких то 12 символах жрет 40 МБ памяти. Советую Вам пересмотреть реализацию перераспределения памяти и проверку на указание последнего элемента.
0
|
|
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||
| 03.06.2012, 15:42 [ТС] | ||
|
ну вот допустим, я вызвал: vector=(item *) realloc(vector, size*sizeof(item)); до этого size был равен 10, sizeof(item) равен 8, итого: 80 байт. после перераспределения: 15 * 8 = 120 байт, *(+еще предыдущие 80 байт), итого: 200 байт, а не 40 мбайт
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 03.06.2012, 15:45 | |
|
У меня, при наличии в файле 12 символов, размер в конце равен, как я и писал выше, 5 314 410.
0
|
|
|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||
| 03.06.2012, 15:48 [ТС] | ||
|
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 03.06.2012, 16:05 | |
|
Вывод консоли
size_malloc= 80
индексирование выполнено dataList.head= 0 ***переход*** переход в else перед realloc vector= 0x8764e0 size_realloc= 240 size= 30 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 1 ***переход*** переход в else перед realloc vector= 0x8764e0 size_realloc= 720 size= 90 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 2 ***переход*** переход в else перед realloc vector= 0x8764e0 size_realloc= 2160 size= 270 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 3 ***переход*** переход в else перед realloc vector= 0x8764e0 size_realloc= 6480 size= 810 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 3 ***переход*** переход в else перед realloc vector= 0x876d60 size_realloc= 19440 size= 2430 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 2 ***переход*** переход в else перед realloc vector= 0x8786c0 size_realloc= 58320 size= 7290 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 1 ***переход*** переход в else перед realloc vector= 0x2f7fd0 size_realloc= 174960 size= 21870 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 1 ***переход*** переход в else перед realloc vector= 0x3063b0 size_realloc= 524880 size= 65610 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 2 ***переход*** переход в else перед realloc vector= 0x330f30 size_realloc= 1574640 size= 196830 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 3 ***переход*** переход в else перед realloc vector= 0x6e0040 size_realloc= 4723920 size= 590490 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 3 ***переход*** переход в else перед realloc vector= 0x880040 size_realloc= 14171760 size= 1771470 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 1 ***переход*** переход в else перед realloc vector= 0xd10040 size_realloc= 42515280 size= 5314410 realloc выполнен индексирование выполнено перераспределение выполнено ***переход*** vector[dataList.curr].element= 2 Просто перед return 0; в main вставьте какую нибудь функцию для паузы программы. И после того как данные считаются, посмотрите сколько она занимает памяти в диспетчере задач.
0
|
|
| 03.06.2012, 16:05 | |
|
Помогаю со студенческими работами здесь
20
realloc realloc realloc realloc Realloc Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|