|
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
|
|||||||||||
Организация динамического двухмерного массива. Порядок распределения памяти20.10.2016, 10:59. Показов 751. Ответов 7
Метки нет (Все метки)
Итак, софорумцы, здравствуйте.
Как всегда, преподавателя ещё нет, а я не знаю прав я или нет. Задача. Требуется организовать двухмерный массив. Мой порядок действий. 1. Вначале объявляется указатель на указатель 2. После мы резервируем память на указатель, в нашем случае массив указателей. В зависимости от количество выделенной памяти. 3. Каждым указателем массива указываем на необходимое кол-во памяти для столбцов массива 4. Заполняем массив. Фрагмент кода:
Решил указать на место меньшего размера, чем требуется. Фрагмент кода:
Такой вывод. Система резервирует сама какую-то часть памяти без ведома программиста?
1
|
|||||||||||
| 20.10.2016, 10:59 | |
|
Ответы с готовыми решениями:
7
Моделирование динамического распределения памяти в операционной системе Разработать собственные функции динамического распределения памяти заполнение двухмерного динамического массива |
|
1 / 1 / 1
Регистрация: 07.07.2016
Сообщений: 11
|
||
| 20.10.2016, 12:22 | ||
0
|
||
|
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
|
|
| 20.10.2016, 12:22 [ТС] | |
|
Точнее, 4 байта
0
|
|
|
1 / 1 / 1
Регистрация: 07.07.2016
Сообщений: 11
|
|
| 20.10.2016, 12:29 | |
|
Насколько я знаю, то malloc() выделяет память из кучи и возвращает указатель на начало этого участка. Но она не проверяет выходза его пределы. Под свою программу Вы выделили именно 4 байта, остальное это не размеченная область памяти, в ней хранится мусор и Вы можете её использовать, но не факт, что все будет гладко, можно набрести на область памяти другого процесса или типа того.
0
|
|
|
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
|
|
| 20.10.2016, 12:34 [ТС] | |
|
Le0nX, короче, понял. Таким образом, вначале, пока есть место в выделенной памяти, мы записываем туда значения, а когда она заканчивается, память рандомно выделяется, притом неизвестно откуда?
0
|
|
|
1 / 1 / 1
Регистрация: 07.07.2016
Сообщений: 11
|
|
| 20.10.2016, 12:48 | |
|
Думаю, что при выходе за выделенный блок, мы начинаем линейно занимать память.(поправьте, если не прав)
Проблема в том, что выделенный блок становится недоступным для остальных и мы не сможем его затереть, если будем делать все правильно, а вот, значения, которые хранятся вне выделенного блока не защищены и ,возможно, при следующих вызовах malloc() могут стать частью совсем других блоков памяти и будут затерты. Добавлено через 3 минуты Вы можете проверить выделение памяти, если вместо значений в printf([%d]) попробуете использовать ключ %p, чтобы вывести адрес.
1
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 20.10.2016, 15:21 | |||
|
Michail97, опять вы меня радуете!
Весьма грамотный подход.Однако. Строка 5 "array=(int**)malloc(n*sizeof(int));//выделяем место для массива указателей" логически неверна (хотя случайно и приводит к правильному результату). Надо sizeof(int *) Ведь вы отводите память на указатели! Добавлено через 3 минуты ![]() Добавлено через 1 минуту
4
|
|||
|
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 384
|
||||||||||||||||
| 20.10.2016, 23:55 [ТС] | ||||||||||||||||
|
Байт, вы, как всегда, меня выручаете. =)
Добавлено через 2 часа 9 минут Байт, ещё один вопрос, и я отстану от вас, по крайней мере, на сегодня.) Вот знакомый уже вам код:
Добавлено через 13 минут Байт, написал по-другому - результат такой же
Байт, короче, я, походу, дурак.(( Добавлено через 1 час 6 минут Байт, И так не катит
0
|
||||||||||||||||
| 20.10.2016, 23:55 | |
|
Помогаю со студенческими работами здесь
8
Объявление двухмерного динамического массива
Создание двухмерного динамического массива Вывод двухмерного динамического массива Сортировка двухмерного динамического массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|