Каково расположение памяти динамического массива Delphi динамического массива X?

for mountedPath in `mount | cut -d ' ' -f 3`; do
    if [ "${mountedPath}" == "${wantedPath}" ]; then
        exit 0
    fi
done
exit 1
5
задан Michiel Rijkers 5 October 2009 в 09:23
поделиться

2 ответа

Динамический массив - это указатель на упакованный блок элементов.

Таким образом, массив массива TSomeRecord является указателем на массив указателей, каждый из которых указывает на блок памяти с length (array [firstlevel]) элементов или nil, если их нет.

Другими словами, то, что вы считаете примерно правильным, с добавлением, что массивы с нулевыми элементами равны нулю. Обратите внимание, что вы не должны изменять количество ссылок и длину самостоятельно, если вы ДЕЙСТВИТЕЛЬНО не знаете, что делаете.

Определить причины вашего сбоя будет сложно без примера кода. Имейте в виду, что для ВСЕХ автоматических типов Delphi (кроме widestring) вся динамическая память должна быть выделена диспетчером памяти delphi.

Попытки сделать это с помощью диспетчера памяти любого языка, с которым вы взаимодействуете. до невозможно.

8
ответ дан 14 December 2019 в 04:42
поделиться

The Language Guide (когда-то доступный в виде очень полезных печатных руководств, теперь найти эту информацию в интерактивной справке очень сложно) гласит:

«Многомерный массив сохраняется с первым возрастанием крайнего правого измерения»

Таким образом, AFAIK у вас нет массива указателей - просто данные каждого измерения один за другим, начиная с самого правого, я думаю, это быстрее потому что больше нет косвенных указаний.

0
ответ дан 14 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: