|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
15.05.2010, 16:49 | #1 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 24
|
Странное поведение realloc
Доброго всем времени суток.
Необходимо организовать двумерный динамический массив. Код: Код:
Не выделяется память только под 2058 строку. Плиз хелп гуру))) |
15.05.2010, 20:25 | #2 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
realloc будет вылетать, если первый параметр - невалидный указатель.
|
15.05.2010, 23:33 | #3 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 24
|
В смысле невалидный???
Вопрос тогда такой: после выделения памяти через calloc доступно 2048 ячеек (0 - 2047), почему в дебагере ячейки [2048] - [2057] и [2060] и т.д. есть NULL, а вот [2058] и [2059] уже имеют адрес, правда обратиться по нему нельзя??? |
15.05.2010, 23:34 | #4 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 24
|
Как может быть для всех строк нормальный указатель, а только для одной нет??? Причем всегда для одной и той же???
|
16.05.2010, 18:34 | #5 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
В прямом. Сначала выделяется память под 2048 элементов вот так:
Код:
Код:
И всё было бы нормально, если бы дальше к этому мусору не применялась realloc: Код:
ЗЫ И не нужно дебагить мусор. Там может быть и совершенно нормальный 0 и валидный указатель (правда на совершенно другое место) и всё что угодно. |
16.05.2010, 20:03 | #6 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 24
|
Так указатель то валидный получается, просто в нем храниться мусор, а память то выделена!
Как можно решить данную проблему??? |
17.05.2010, 00:01 | #7 | |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Цитата:
Matrix[i] от 2048 невалидны, а к ним применяется realloc. Можно для первой половины вызывать realloc, для второй malloc или calloc. Можно обнулить вторую половину массива. |
|
17.05.2010, 09:52 | #8 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 24
|
Проблема решена, но как то вроде раньше все нормально было с realloc. Точно уже использовал такое вот динамическое распределение памяти, проблем не возникало. Раньше юзал VS и Borland 6, ща Borland 2009. Возможно из-за платформ.... Спасибо огромное. Буду иметь ввиду в будущем)))
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Странное поведение gets | alex_alpha | Общие вопросы C/C++ | 3 | 27.03.2010 18:21 |
Странное поведение null | Vitalyk | JavaScript, Ajax | 6 | 13.02.2010 15:22 |
Странное поведение TTreeView | mutabor | Компоненты Delphi | 1 | 01.05.2009 05:17 |
Странное поведение базы | yulia | БД в Delphi | 7 | 22.04.2009 07:15 |