Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 42

Fstream и malloc_assert

05.11.2014, 19:53. Показов 1127. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, а то уже голова болит.
Есть программа которая предоставляет выбор алгоритма обработки. Данные она берет из файлов по моему выбору.
Затем записывает результат потоком в файл имя которому тоже назначаю я.
Когда я обрабатвыаю файл с 3, 6, 7, 8 числами все чики-пики.
Беда случается с 4 и 5 числами (типа за размер не залезаю).
часть кода

сразу после хидеров
C++
1
ofstream f;
потом обработки

а сдесь беда


C++
1
2
3
fout<<dir<<".dot";
        f.open(fout.str().c_str(), ios::out);  
             f<<"graph  {"<<endl<<"node [margin=0 fontsize=12 width=0.5 shape=circle style=filled]"<<endl;
аборт на строчке 2 с вот этим (но сам файл создается.)

0x00007ffff5a5127d in __malloc_assert (assertion=assertion@entry=0x7ffff5b55ba 0 "(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)", file=file@entry=0x7ffff5b516c0 "malloc.c", line=line@entry=2372, function=function@entry=0x7ffff5b51a3e <__func__.11292> "sysmalloc") at malloc.c:293


еще раз подчеркну что в файлах с 3, 6, 7, 8 числами эту строку проходит без проблем, а когда 4 и 5 чисел беда.


Дело происходит в
Ubuntu 14.04 64 bit
Code Blocks 13.12


Еще одно, такое наблюдалось в Ubuntu 12.04 32 bit, Code Blocks 10.05 но там только для 4 был аборт.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2014, 19:53
Ответы с готовыми решениями:

fstream с++
Помогите пожалуйста... Как при считывании из файла считать переменные если они в файле находяться на разных строчках например надо...

Fstream
multiple definition of `ZapisInputFile'| Определив ofstream в header файле получаю ошибку, а закомментировав эту строку успешно...

fstream
Дан текстовый файл. Осуществить посимвольную чередующуюся печать файла в прямом и обратном направлении в новый файл. Например, если в файле...

4
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,296
05.11.2014, 20:11
Беда не здесь, а где-то совсем в другом месте. Здесь эта беда лишь обнаруживается.

Ваша программа где-то раньше разрушила внутренние структуры динамической памяти. Скорее всего - путём записи за пределами выделенного блока.

То, то что-то там у вас работает для других значений - ничего не значит. Это случайность.
1
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 42
05.11.2014, 20:26  [ТС]
Ответ вселяет надежду.
Лечить можно? (или нужен новый intell i157 super turbo nano 4 core)
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
05.11.2014, 20:29
Лучший ответ Сообщение было отмечено smartes как решение

Решение

Цитата Сообщение от smartes Посмотреть сообщение
Лечить можно?
Можно. valgrind тебе поможет.
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,296
05.11.2014, 22:01
Лучший ответ Сообщение было отмечено smartes как решение

Решение

Цитата Сообщение от smartes Посмотреть сообщение
Лечить можно?
Лечить можно. Способы бывают разные.

Первый - пересмотр кода. Если код обозрим, то можно просто подумать головой: вдруг вспомнится, где могла произойти запись за пределы памяти. ("Дедукция, мой дорогой Ватсон")

Второй - valgrind и т.п.

Третий - остроумный. Возьмите некоторый минимальный самодостаточный кусочек кода, который выявляет проблему, и аккуратно поднимите его выше по коду. Посмотрите, будет ли падение там. Двигая этот кусочек кода туда-сюда и следя за падением почти всегда можно выявить с достаточной точностью, где именно произошло разрушение памяти.

Зачастую вместо оригинального кусочка кода достаточно просто сделать 'malloc' с некоторым подобранным значением размера (лучше всего - именно то значение размера, которое вызвало падение в вашем случае). Такой 'malloc' очень легко вставлять в код где угодно. Если вам удастся воспроизвести проблему с таким прямым вызовом 'malloc', то найти точное место разрушения памяти - задача элементарная.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2014, 22:01
Помогаю со студенческими работами здесь

Fstream
Можете пояснить что такое объект fstream

fstream и for
Здрасте. Собственно, не могу понять, по какой причине не работает вот такой вот код, хотя по идее должен работать, или я ошибаюсь? ...

fstream
Уважаемые Форумчани, не могу понять по чему не хочет открываться файл второй раз: ifstream in; while (...) { ...

fstream
помогите, пожалуйста, чет я совсем запуталась((( /*Дан текстовый фал, содержащий целые числа, разделенные пробелами. Определить...

C++ fstream
входной файл: 2 20 30 27 2 - это размер массива(размер будет + 1) вторая строчка это числа в массиве как сделать так чтобы из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru