|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 18
|
||||||
Ошибка Fatal glibc error: malloc.c:259904.01.2025, 20:16. Показов 11312. Ответов 34
При компиляции ошибок нет.
При запуске в середине программы ошибка.
Открываю файл config (текстовый), в нем настройки программы. С новой строки (переменная = значение). Есть в конфиге следующая строка: prefix_mobile = m При наличии строки ошибок нет, но переменная в которую я копирую значение оказывается пустая. Когда строку из конфига убираю - происходит ошибка (выше). 1. Почему переменная char * prefix_mobile пустая, когда я копирую туда значение. Она не пустая сразу. Я делал вывод в консоль через printf и она выводится правильно. Ниже через строк 300-400 кода я вывожу эту переменную и она пустая. 2. Почему когда я убираю эту строку из конфига происходит ошибка (выше). Много информации нашел в интернете, в т.ч. про valgrind утилиту для тестирования. Могу переписать код программы по новой и посмотреть что выйдет, но уйдет много времени. 3. Читал статью в интернете. Про выделение памяти malloc. Есть информация что выделенная память растет в геометрической прогресиии, даже если передаю в malloc 9 байтов, то она округляется до 8 * 2 = 16. Если передаю malloc 129 (128 + 1), то память округляется до 256 (128 * 2). Это миф или есть основа для таких выводов? Может есть другое объяснение этой информации? Есть альтернативные библиотеки для управление памятью?
0
|
||||||
| 04.01.2025, 20:16 | |
|
Ответы с готовыми решениями:
34
Ошибка при компиляции [Linker Fatal Error] Fatal: Expected a file name: Ошибка [Linker Fatal Error] Fatal: Unable to Open file 'VCL.LI' Ошибка [Linker Fatal Error] Fatal: Expected a file name: |
|
274 / 206 / 30
Регистрация: 26.11.2022
Сообщений: 897
|
|||
| 08.01.2025, 00:08 | |||
|
мне вот совершенно непонятно почему вы не хотите выяснить где ваша программа выходит за размер выделенного блока памяти. делаете отладочную обёртку, подписываете до и после блока и всё. единственная модификация существующего кода - добавляется ещё один заголовочный файл.
0
|
|||
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 18
|
|
| 10.01.2025, 01:12 [ТС] | |
|
Ошибка была в аллокаторе malloc.h
решил так: 1. библиотеку <unistd.h> не отключал 2. с репозитория github (nasrat-v/malloc) скопировал себе все функции в начало файла. ошибка исчезла. в чем проблема неизвестно.
0
|
|
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||
| 14.01.2025, 23:10 | ||
|
Не думаю, что щас как-то подругому. То, что ты ошибку у себя не нашел, а валить стал на библиотечный код - это понятная реакция, но вот то, что ты на этом остановился и копать не стал, чтоб истину узнать, говорит о тебе многое и не в самом лучшем свете.
1
|
||
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 18
|
|
| 18.01.2025, 10:34 [ТС] | |
|
ablex, ты видел исходный код библиотеки malloc? вот посмотри сначала а потом делай выводы
0
|
|
|
274 / 206 / 30
Регистрация: 26.11.2022
Сообщений: 897
|
||
| 18.01.2025, 11:29 | ||
|
Этих реализаций сотни и постоянно выходят новые и улучшенные версии. потрогать вершину айсберга - тут https://habr.com/ru/articles/645137/ любой аллокатор памяти это очень стабильный код, который всячески тестируется. если у вас срабатывает assert внутри аллокатора то 99,999 % - это ошибка а вашем коде. Это ваш код попортил внутренние данные аллокатора.
0
|
||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
|
| 18.01.2025, 16:57 | |
|
davidzhuchkov, Ищи ошибку в своём коде.
0
|
|
|
Вездепух
13214 / 6847 / 1825
Регистрация: 18.10.2014
Сообщений: 17,332
|
|||
| 19.01.2025, 06:35 | |||
|
P.S. В языке С нет никакого "аллокатора malloc.h". Добавлено через 4 минуты memset делается как &g.useragent_masks_desktop[ g.useragent_masks_desktop_count ][0], а для strcpy - как g.useragent_masks_desktop[ g.useragent_masks_desktop_count ]. Да, это одно и то же, но почему вдруг такие два стилистически разных подхода использованы в соседних строчках кода? Разные люди писали?Это не говоря уже о полнейшей бессмысленности данного memset.
0
|
|||
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 18
|
||||||||||||||||
| 25.01.2025, 13:29 [ТС] | ||||||||||||||||
|
TheCalligrapher, проблема была не в memset точно, потому-что функции выполняются поочередно. просто уходило больше времени.
Вообще библиотека malloc.h существует. Идет вместе с библиотекой unistd.h. также можно скачать и подключить отдельно. Проблема была в REALLOC , потому что он портил данные при перераспределении памяти. Вообще нужно выделать память сразу, и рассчитывать это перед запуском основного кода. Допустим зная что максимальная длина 1000 в 2д массиве. можно выделить сразу память для указателей написав:
0
|
||||||||||||||||
|
Вездепух
13214 / 6847 / 1825
Регистрация: 18.10.2014
Сообщений: 17,332
|
||||||||
| 25.01.2025, 17:13 | ||||||||
??? Того, что "можно скачать и подключить отдельно" существует очень много разного. Это ничего не значит.В языке же С никакой "библиотеки malloc.h" не существует. !!! "Есть информация"...Кстати, а что такое "портить память"?
0
|
||||||||
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 18
|
|
| 25.01.2025, 20:00 [ТС] | |
|
TheCalligrapher, да мне эта критика никуда не уперлась.
за пределы памяти не выхожу. realloc выдает ошибку Fatal glibc error: malloc.c:2599. если нет решения - досвидание. покиньте тему. на указатели первого уровня уходит 4гб из 48 гб. так если жалко купить 4 планки ОЗУ по 16 гб, и проводить тесты. а мне они именно для тестов нужны. то это ваше дело. сколько озу жрет mysql? она вообще выделает по 65к байт на текст и куда там 10к символов писать а остается сколько? в оптимизации вы профан! Добавлено через 5 минут TheCalligrapher, у тебя Сообщений: 16,928 на форуме, а ты логику выбора не понимаешь. ты вообще программист?
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 18
|
|||
| 25.01.2025, 20:32 [ТС] | |||
|
Добавлено через 16 минут
0
|
|||
|
274 / 206 / 30
Регистрация: 26.11.2022
Сообщений: 897
|
|
| 25.01.2025, 21:57 | |
|
Стилистические различия скорее всего из за того что в разное время писали запросы в чат гпт.
0
|
|
|
Вездепух
13214 / 6847 / 1825
Регистрация: 18.10.2014
Сообщений: 17,332
|
||
| 25.01.2025, 22:18 | ||
|
У многих "пионэров" из-за некачественных примеров в книге K&R прямо в мозх прошит карго-культ кастования результата malloc. То есть пресловутой "лампочкой Павлова", вызывающей выделение ненужных кастов, является именно эта последовательность букв - "malloc". Иные буквосочетания (mmap, sbrk...) такого рефлекса обильного кастовыделения не вызывают, по каковой причине для этих функций каст не делается.Доходит иногда даже до такого абсурда (который мы не раз встречали и здесь), когда "пионэр" остервенело кастует все результаты malloc, но в то же время религиозно избегает кастов на расположенные рядом же realloc. Попытки выяснить причины такого поведения как правило повергают испытуемого в состояние ступора с беспорядочным морганием остекленевшими глазами и нечленораздельным бэканьем и мэканьем.
0
|
||
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 18
|
|
| 28.01.2025, 15:11 [ТС] | |
|
TheCalligrapher, кастом это что? то что не входит в стандартные библиотеки? ну тогда вы знаете что они бесплатные потому что это свободное ПО. Никто там сильно не старался, написано было 1 раз и без исправления ошибок, а только потом выходят стандарты, которые исправляют ошибки.
Есть и другие аллокаторы RAM. Некоторые аллокаторы памяти в Си: dlmalloc (расшифровывается Doug Lea malloc); 2 ptmalloc2 (расшифровывается pthreads malloc) — форк предыдущего, используется в glibc; 2 jemalloc — используется в FreeBSD и Firefox; 2 tcmalloc — от Google; 2 аллокатор MSVC, использующий WinAPI-функции HeapAlloc/HeapFree. malloc почему то, создатели этих аллокаторов, использовать не стали. Добавлено через 2 минуты TheCalligrapher, сам рот открываешь. хочешь сказать что у тебя была такая ошибка и ты ее исправил? или ты просто комментируешь сам не зная что
0
|
|
|
274 / 206 / 30
Регистрация: 26.11.2022
Сообщений: 897
|
|
| 28.01.2025, 16:21 | |
|
davidzhuchkov, Вам сказали что сделать - включите (временно для отладки) в свой проект библиотеку отслеживания повреждений в памяти и выясните в какой момент портится.
0
|
|
| 28.01.2025, 16:21 | |
|
Ошибка при компилировании проекта. [Linker Fatal Error] Fatal: Unable to open file '*.OBJ' [Linker Fatal Error] Fatal: Could not open ~CBuilder6\Projects\Project1.exe (error code 5) Error C2760: синтаксическая ошибка / Fatal error C1004: непредвиденное обнаружение конца файла
ошибка fatal error Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|