Может ли целевой адрес Delphi XE2 / 64bit, например. 1 терабайт памяти?

Могут ли Delphi/FastMM обращаться так же, как спецификации для ОС? http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx

У меня только что был клиент, который спросил меня, может ли мое программное обеспечение получить доступ к одному терабайту (серверу Windows 2008), что заставило меня задуматься.


person Tom    schedule 27.11.2013    source источник
comment
Не было бы много пользы в 64 битах, если бы вы не могли адресовать 40-битное адресное пространство. :) Так что, если бы ответ оказался отрицательным, я бы назвал использование Delphi термина ложной рекламой.   -  person cHao    schedule 27.11.2013
comment
Это похоже на вопрос, который следует адресовать непосредственно Embarcadero, поскольку он касается возможностей их продукта. Однако я избавлю вас от хлопот и просто отвечу Да. Указатели в 64-битной версии Delphi сами по себе являются 64-битными. Поскольку это превышает пределы физической адресации, само собой разумеется, что он должен легко адресовать такой большой объем памяти.   -  person Allen Bauer    schedule 27.11.2013


Ответы (1)


Delphi выдает код с 64-битными указателями. Такие указатели способны адресовать 264 байта, то есть более 1 ТБ. Любые ограничения накладываются дизайном виртуальной памяти операционной системы и/или лицензией, и компилятор Delphi ничего не знает о таких ограничениях. Во время выполнения система применяет ограничения памяти, и ваш код будет подчиняться этим ограничениям. Но сама Delphi не имеет ограничений по адресации.

Точно так же FastMM не имеет понятия ограничения в 1 ТБ. FastMM сообщит об ошибках нехватки памяти, когда система сообщит, что память исчерпана.

Могут ли Delphi/FastMM обращаться так же, как спецификации для ОС?

да.


В сторону. Старые 32-разрядные версии Delphi, в которых использовался диспетчер памяти Borland, были несовместимы с адресами в диапазоне 2–4 ГБ. Эта проблема проявляется, если такой код Delphi выполняется в процессе, помеченном как поддерживающий большие адреса.

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

person David Heffernan    schedule 27.11.2013