|
1 / 1 / 0
Регистрация: 26.02.2011
Сообщений: 23
|
|
Каков максимальный размер массива?25.10.2014, 16:20. Показов 18916. Ответов 36
Метки нет (Все метки)
Я занимаюсь интегрированием на прямоугольных сетках, для записи значений в узлах сетки я использую тройной массив arr[][][].
программа ещё терпит, когда массив я задаю размером 45x45x45, однако 50x50x50 уже не поддерживается, прога выдаёт ошибку в винде. Хотелось бы иметь больше узлов сетки в будущем. Как задавать массивы с большими размерностями, чем 45 45 45? Знаю, что указатель в общем-то задаёт 1d массив неизвестного размера, указатель на указатель- двумерный массив, указатель на указатель на указатель - 3-мерный массив. Правильно я думаю, что можно отказаться от записи arr[][][] и перейти на задание массивов указателями, чтобы можно было получить намного больше переменных при задании? Можно какие-то мысли мне на этот счёт рассказать, ну и если можно - показать как правильно пишется. Да, ещё приходится передавать массив в функции.
0
|
|
| 25.10.2014, 16:20 | |
|
Ответы с готовыми решениями:
36
Каков максимальный размер одномерного массива |
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
|
| 27.10.2014, 14:59 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 27.10.2014, 15:34 | ||
|
0
|
||
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||
| 27.10.2014, 21:13 | ||
|
Реализации эффективных языков предпочитают используют тот же самый стек. Размеется, никто не запрещает реализациям языков отказаться от использования аппаратного стека и реализовать свой собственный стек для хранения локальных переменных, в том числе и "на списке массивов". (Я не удивлюсь, если где-то такие уже есть). Но это будет ударом по производительности получаемого кода. А в С и С++ минимизация потерь проивордительности на вызове функции очень важна.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||
| 28.10.2014, 04:32 | ||||
|
Добавлено через 53 секунды Добавлено через 4 минуты
0
|
||||
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||
| 28.10.2014, 04:37 | ||
|
Никто мне не запрещает написать компилятор С, который вообще не будет использовать аппаратный стек для хранения локальных переменных. Вместо этого я могу реализовать собственный стек вручную: каждый кадр стека выделяется в начале исполнения функции через 'malloc' и освобождается через 'free' в конце. В былые времена именно так это и делалось на машинах с очень ограниченным по размеру стеком. Более того, даже сейчас так делается на некоторых IBM менфреймах, где аппаратного стека нет вообще.
0
|
||
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
|||||
| 28.10.2014, 16:29 | |||||
улыбнуло.
![]() Ещё больше улыбнуло.
0
|
|||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 28.10.2014, 16:40 | |
|
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
|
| 28.10.2014, 16:48 | |
|
Ух ты! Как аутентично сыгран образ фидошного пионэра. (Смахиваю слезу...)
Обращаясь к завсегдатаям: вот это заскорузлое создание выше - это официальный форумный тролль (похоже совсем недавно принятый на работу) или просто так что-то со стороны приползло?
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 28.10.2014, 16:49 | |
|
Блин, а я то думал. А оно вот оно что!
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||
| 28.10.2014, 21:17 | ||
|
Архитектуры IBM 360/370/3080 не имеют встроенного стека и не имеют "стековых" инструкций. Например, инструкция вызова подпрограммы BAL/BALR сохраняет адрес возврата в указанный пользователем регистр. А если пользователю хочется иметь "традиционный" стек - он его будет организовывать сам и адрес возврата туда сбрасывать тоже будет сам, как и извлекать его оттуда. При этом нативная реализация компилятора C для IBM 360 не использует "традиционный" стек в памяти для хранения локальных переменных. При каждом вызове функции, Activation Record (AR) для этой функции (т.е. блок локальных переменных) выделяется динамически и линкуется с предыдущим блоком в связный список.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.10.2014, 04:41 | |
|
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||
| 29.10.2014, 07:06 | ||
|
Ключевой момент тут в том, что сбрасывание адреса возврата в память если и делалось, то делалось пользователем "вручную" при помощи явной отдельной команды, а не автоматически.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 29.10.2014, 08:32 | ||
|
Добавлено через 8 минут Я когда для спекрума на асме писал, то ни какими менеджерами памяти не заморачивался и выделял вручную безо всяких кавычек. От 40000 до 46143 - копия видеостраницы, 38987 - флаг направления копирования. И ЕЯННП с 30000 начинается сама функция копирования.
0
|
||
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
|
| 02.11.2014, 04:39 | |
|
Мужики. Вы, вообще, об архитектуре процессоров что-нибудь слышали?
Есть регистры общего назначения (РОН). В них можно делать пересылку, инкремент и декремент. Есть арифметический регистр. В нём производятся все вычисления: сложение, вычитание, сравнение. Есть автоматические регистры. Регистр адреса команд и регистр стека. Для управления регистром стека используются команды push - загрузить в стек, pop - вытащить из стека и call - вызов подпрограммы (автоматически сохраняется адрес возврата + 1). При выполнении этих команд, вершина стека меняется. К сведению несведующих. Стек был изобретён ещё тогда, когда ЭВМ-ы занимали по три гектара, а ОЗУ в 1Мбайт, весило около тонны. С тех пор, во всех без исключения процессорах, стек - неотъемлемая часть их архитектуры. Добавлено через 20 минут Да, чуть не забыл. В современных процессорах, есть ещё один тип памяти. Сверхоперативное ЗУ (СОЗУ), так называемый - кеш. Это вообще, интересная штука. Она напоминает стопку книг на столе. Читаем названия книг сверху вниз. Выбираем любую из стопки, но ложим книгу, только сверху стопки. Если нужной книги на столе (кеше) не окажется, берём её с полки (ОЗУ), но ложим в реш опять-же сверху. Если кеш при этом переполняется, удаляем из стопки, самую нижнюю книгу. В результате таких операций, на столе всегда будут находиться, наиболее используемые книги. Лишние, будут со временем выталкиваться на полку.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 02.11.2014, 11:36 | |||
|
Добавлено через 1 минуту
0
|
|||
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
||
| 02.11.2014, 14:46 | ||
|
Да, и ещё. Регистры общего назначения, могут выполнять операцию сложения, минуя арифметический регистр. Но, есть регистры специального назначения. Как правило, они напрямую из программы не доступны или доступны в ограниченном объёме. Так, в регистр стека, может быть загружена вершина стека, но инкрементировать и декрементировать его произвольным образом не получится.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
| 02.11.2014, 15:38 | ||||||
|
Добавлено через 7 минут Добавлено через 8 минут
Добавлено через 3 минуты Хотя на самом деле есть одно исключения: есть операции, выполняемые только с некоторыми регистрами: MUL, IMUL, DIV, IDIV имеют фиксированный первый операнд, стековые операции закреплены за SP, а операции перехода за IP. Но регистр является регистром общего назначения, то все не закреплённые за конкретными регистрами операции с ним можно выполнять. Добавлено через 1 минуту Добавлено через 4 минуты
0
|
||||||
| 02.11.2014, 15:38 | |
|
Каков максимальный размер динамического массива объектов? Подскажите пожалуйста каков предельно максимальный размер БД Access Через сколько вклад превысит заданный размер и каков при этом будет размер вклада.
Максимальный размер массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|