|
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 15
|
||||||
Не выполняется realloc03.06.2012, 13:35. Показов 4388. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|