|
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
|
|||||||||||
Динамический массив массивов, realloc, размер по указателю на имя массива22.08.2015, 00:03. Показов 4436. Ответов 7
Метки нет (Все метки)
Добавлено через 4 часа 13 минут Почему с malloc работает, а при изменении размера нет? :-(
0
|
|||||||||||
| 22.08.2015, 00:03 | |
|
Ответы с готовыми решениями:
7
Динамический массив, malloc. realloc Динамический 2-размерный массив (malloc, realloc) Класс Вектор, поля класса: n- количество элементов массива, a - имя массива целых чисел(массив динамический) |
|
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
|
||||||
| 22.08.2015, 00:24 | ||||||
|
Хотелось бы конкретики, что хотите, что именно не получается, сыплются ли ошибки? Понимаю, массивы в динамическом массиве статичны? Тогда:
0
|
||||||
|
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
|
|
| 22.08.2015, 00:43 [ТС] | |
|
а) у меня имеется двумерный динамический массив массивов, мне нужно изменить его размеры;
б) тоже самое, что и в пункте "а", но изначальный размер равен нулю; то что realloc является дельта величиной к malloc я в курсе, т.е при его использовании надо прибавлять или вычитать объём памяти из уже выделенного до этого Добавлено через 7 минут ошибки сыпятся при выделении памяти на втором шаге, realloc в цикле где, падает сразу на первом цикле
0
|
|
|
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
|
|||||||||
| 22.08.2015, 10:12 | |||||||||
|
не является, т.е. нужно указывать абсолютную величину. Мне ваша структура не известна, но выделять память нужно под поинтеры, а не под элементы. Тоже самое и здесь. См. рабочий пример:
1
|
|||||||||
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
||||||
| 22.08.2015, 16:30 | ||||||
|
Ваю, в realloc (как и остальных -alloc() ) нужно указывать размер элементов, которые будут в массиве. Двойной указатель будет содержать начало адреса массива одинарных указателей, поэтому (учитывая, что Arr — двойной указатель):
0
|
||||||
|
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
|
||||||
| 22.08.2015, 20:38 [ТС] | ||||||
|
Разобрался, опять несовсем очевидные косяки
прошлый раз в другой теме в этом же месте была проблема с тем, что при входящем значении адреса массива в realloc при изменении размера массива НЕ ДОЛЖНО БЫТЬ = NULL, иначе данные будут переброшены в новое место и для исправления проблемы требовалась циклическая перезапись значения дабы не потерять адрес теперь всё наоборот - при начальной инициализации памяти её содержимое затирается "рандомной" <cencored/>, если быть точным, то это значение = 0xCDCDCDCD, ясен пень, что по этому адресу изначально никаких данных нет и там ничего не выделено, а realloc при выделении памяти для строк пытается изменить размер того, чего нет и в результате этого падает, для исправления косяка нужно предварительно в ручную повторно инициализировать **Arr нулями, дабы realloc понимал, что нужно найти новый свободный кусок памяти и занять его под данные при отсутствии строки while (j < SizeH) { Arr[j] = NULL; j++; } j = 0; будет ошибка: Необработанное исключение по адресу 0x100CB2CE (msvcr120d.dll) в M1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDC8.
0
|
||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|
| 22.08.2015, 20:51 | |
|
1
|
|
|
27 / 27 / 9
Регистрация: 21.04.2015
Сообщений: 704
|
||||||
| 30.08.2015, 15:28 [ТС] | ||||||
|
Ну и трёхмерный массив, мож кому будет интересно, D - глубина, H - высота, W - ширина
0
|
||||||
| 30.08.2015, 15:28 | |
|
Помогаю со студенческими работами здесь
8
Динамический массив через realloc - ошибка преобразования типов Используя malloc и realloc создать двумерный динамический массив Дан динамический одномерный массив размера N, изменить размер массива до M
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|