OberonCore https://forum.oberoncore.ru/ |
|
Динамические многомерные массивы выделяются одним блоком https://forum.oberoncore.ru/viewtopic.php?f=2&t=3988 |
Страница 1 из 1 |
Автор: | Евгений Темиргалеев [ Воскресенье, 10 Июнь, 2012 11:15 ] |
Заголовок сообщения: | Динамические многомерные массивы выделяются одним блоком |
У меня была отложена в закорках "сишная" схема, подразумевал, что и тут (ББ/КП) так же; даже проверить в голову не приходило: Код: MODULE PrivTest; IMPORT Log, SYSTEM; PROCEDURE Do* (a, b: INTEGER); VAR p: POINTER TO ARRAY OF ARRAY OF INTEGER; i, j, base: INTEGER; BEGIN NEW(p, a, b); i := 0; base := SYSTEM.ADR(p^); WHILE i < LEN(p) DO j := 0; WHILE j < LEN(p[i]) DO Log.Int(SYSTEM.ADR(p[i, j]) - base); INC(j) END; Log.Ln; INC(i) END END Do; END PrivTest. ^Q "PrivTest.Do(2, 3)" Код: 0 4 8
12 16 20 |
Автор: | Info21 [ Воскресенье, 10 Июнь, 2012 11:58 ] |
Заголовок сообщения: | Re: Динамические многомерные массивы выделяются одним блоком |
Вы бы оснащали чиселки интерпретацией. А то требуется пусть маленькое, но ненужное усилие и потеря времени, чтобы понять (тем, кто это знал всегда), что тут речь о том, что ... некоторые знали всегда |
Автор: | Роман М. [ Воскресенье, 10 Июнь, 2012 12:50 ] |
Заголовок сообщения: | Re: Динамические многомерные массивы выделяются одним блоком |
Ну да. А в чём новость? |
Автор: | Валерий Лаптев [ Воскресенье, 10 Июнь, 2012 14:30 ] |
Заголовок сообщения: | Re: Динамические многомерные массивы выделяются одним блоком |
Да. А как иначе? Память-то линейная. Поэтому вся "многомерность" - это вычисление соответствующих индексов на строке элементов... |
Автор: | QWERTYProgrammer [ Воскресенье, 10 Июнь, 2012 14:45 ] |
Заголовок сообщения: | Re: Динамические многомерные массивы выделяются одним блоком |
Валерий Лаптев писал(а): Да. А как иначе? Память-то линейная. Поэтому вся "многомерность" - это вычисление соответствующих индексов на строке элементов... Т.е. нет отличия от C? |
Автор: | Valery Solovey [ Воскресенье, 10 Июнь, 2012 17:07 ] |
Заголовок сообщения: | Re: Динамические многомерные массивы выделяются одним блоком |
Евгений Темиргалеев писал(а): Код: 0 4 8 12 16 20 Так а что Вы хотели сказать? |
Автор: | Евгений Темиргалеев [ Воскресенье, 10 Июнь, 2012 19:52 ] |
Заголовок сообщения: | Re: Динамические многомерные массивы выделяются одним блоком |
Хотел сказать, что мне долгое время казалось одно, а реально было другое. Пережитки сей в голове. Насчёт "сишной" схемы --- посмотрите какие примеры попадаются при поиске "динамический двумерный массив в си". Например тут: http://citforum.ru/programming/cpp_march/cpp_059.shtml Много "на виду" примеров с линеаризацией? |
Автор: | Valery Solovey [ Понедельник, 11 Июнь, 2012 00:31 ] |
Заголовок сообщения: | Re: Динамические многомерные массивы выделяются одним блоком |
А, всё, теперь понятно. А то название темы вкупе с первым предложением как-то запутывало. Почему-то показалось, что в Си оно выделяется одним блоком, а в Обероне - непонятно. В Си, подозреваю, тоже можно одним блоком выделять. x*y ячеек памяти выделить в new, а затем каждый из x указателей выставить в правильную позицию выделенного блока памяти. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |