PureBasic

AllocateMemory()

Синтаксис

*MemoryID = AllocateMemory(Size [, Flags])

Описание


Выделяет новую непрерывную область памяти (новый буфер) заданного размера. Выделенная область памяти будет очищена и заполнена нулями (символ #Null).

Параметры

Size Размер в байтах для выделяемой области памяти.
Flags (дополн.) Этот параметр может быть одним из следующих значений:
  #PB_Memory_NoClear: Не заполнять новую область памяти нулями. Это может ускорить выделение, 
                      если выделенная память требуется немедленно.

Возвращаемое значение

Возвращает адрес (Указатель) выделенного буфера памяти, если память не может быть выделена - будет возвращён 0.

Комментарии

Для возврата выделенной памяти обратно в систему можно использовать функцию FreeMemory().
Для изменения размера выделенной области можно использовать функцию ReAllocateMemory(). При завершении программы все выделенные области памяти освобождаются автоматически.

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

Пример

*MemoryID = AllocateMemory(5000)
If *MemoryID
    Debug "Адрес начала 5000-байтовой области памяти:"
    Debug *MemoryID
    PokeS(*MemoryID, "Поместим эту строку в область памяти")
    FreeMemory(*MemoryID) ; также было бы сделано автоматически по окончании программы
Else
    Debug "Не удалось выделить запрошенную память!"
EndIf

См. также

ReAllocateMemory(), FreeMemory(), MemorySize()

Поддерживаемые OS

Все

Оглавление Memory - AllocateStructure() ->