Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2009, 14:18   #1
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию Ошибка malloc(): memory corruption

Здравствуйте

У кого-то когда-то возникала такая ошибка при вызове malloc()?

Цитата:
*** glibc detected *** ./CPrompt: malloc(): memory corruption: 0x08054990 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7d44654]
/lib/libc.so.6[0xb7d46c8a]
/lib/libc.so.6(__libc_malloc+0x9c)[0xb7d4888c]
./CPrompt[0x804bff1]
./CPrompt[0x804e5cb]
/lib/libc.so.6(__libc_start_main+0xe5)[0xb7cee705]
./CPrompt[0x8048f01]
======= Memory map: ========
08048000-08052000 r-xp 00000000 08:06 1300067 /home/roma/projects/CPrompt/bin/Debug/CPrompt
08052000-08053000 r--p 00009000 08:06 1300067 /home/roma/projects/CPrompt/bin/Debug/CPrompt
...
Роман Радер вне форума Ответить с цитированием
Старый 03.10.2009, 18:25   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

звезды сегодня не заряжены положительной энергией и я не смог увидеть твой код
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 03.10.2009, 18:43   #3
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

да проблема в том что при ЛЮБОМ выделении памяти такая ошибка.
в начале программы такой проблемы нет, а когда что-то происходит (переполнение памяти, еще что-то я без понятия, но она не занимает больше 3х мегабайт в памяти во время запуска)
даже при int* I=new int;
или при int* I = (int*) malloc(4);
такая ошибка

кидать код всего проекта было бы не целесообразно.
Скажите, при каких случаях возникает эта ошибка?

ЗЫ самое интересное, что происходит не возбуждение исключения, а именно прерывание работы с этой ошибкой.

Последний раз редактировалось Роман Радер; 03.10.2009 в 18:46.
Роман Радер вне форума Ответить с цитированием
Старый 03.10.2009, 18:49   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
а когда что-то происходит
ну ты же должен понимать, что никто из присутствующих тут не сможет угадать, что же там происходит ну что могу предложить - пройдись отладчиком, узнай, на каком выделении памяти падает и дальше уже по обстоятельствам. может где то что то не освобождается, может еще что то.

пс. не надо так делать - int* I = (int*) malloc(4); sizeof юзай. смотрится плохо и вообще, не айс)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 03.10.2009, 18:59   #5
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

Цитата:
а когда что-то происходит
ну ничего кроме выделения/освобождения памяти в небольших количествах.

да сделал я трассировку.. нашел где ошибка.
это действительно может быть если где-то память не освобождается?

Цитата:
пс. не надо так делать - int* I = (int*) malloc(4); sizeof юзай. смотрится плохо и вообще, не айс)
это я написал чтоб показать, что и при malloc и при new не работает.
а вообще то я new пользуюсь.
Роман Радер вне форума Ответить с цитированием
Старый 03.10.2009, 19:06   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Роман Радер
ну грешить на libc у меня просто рука не поднимается
Цитата:
это действительно может быть если где-то память не освобождается?
вообще тяжело сказать. вот у меня как то было такое, что выделил память на байт меньше, чем требовалось, но все равно через указатель писал в эту область данных (в 1 байт, который не выделил). На взгляд программа работала, но при каких то случаях - сегфаулт. Конкретно - закрываю файл (fclose) - segfault. Я просто офигевал, ибо в месте закрытия файла было 2 строки)))

Если проект не очень большой, можешь кинуть мне, мне нравится в таком копаться (небольшой - <= 1000 строк)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 03.10.2009, 19:34   #7
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

Цитата:
Если проект не очень большой, можешь кинуть мне, мне нравится в таком копаться (небольшой - <= 1000 строк)
хех, достаточно большой. 6 cppшек и 11 хидеров. каждый немаленький.

спасибо, попробую разбираться.
напиши мне в аську если не сложно... я в ауте

Последний раз редактировалось Роман Радер; 03.10.2009 в 19:42.
Роман Радер вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SIEGSEGV в malloc() TheVampire Общие вопросы C/C++ 0 25.09.2009 14:32
Проблема с malloc Обледеневший Общие вопросы C/C++ 7 14.09.2009 18:06
Своя реализация malloc и free Sazary Общие вопросы C/C++ 14 12.09.2009 18:32
malloc free Ошибка. BeNN Общие вопросы C/C++ 19 09.07.2009 12:46
Проблемы с выделением динамической памяти malloc (recalloc) slips Общие вопросы C/C++ 6 29.04.2009 19:27