Цитата:
Сообщение от Nyctos Kasignete
Я так поняла, что человеку надо именно освободить память, отведенную под переменную — «экземпляр типа», если так можно выразиться.
|
В точку
Но что-то этот код странный:
Цитата:
Сообщение от Nyctos Kasignete
Или же так... =)
Код:
type
TStaticArray = array[0..255] of Byte;
PStaticArray = ^TStaticArray;
var
StaticArray: PStaticArray;
begin
New(StaticArray);
StaticArray^[25] := 25;
StaticArray^[255] := 255;
ShowMessage(IntToStr(StaticArray^[25] + StaticArray^[30] + StaticArray^[255]));
Dispose(StaticArray);
end;
|
Во избежания различных манипуляций приведу полный код!
Код:
var vertexBuffer:array[0..1] of GLInt;
Procedure VBOInit;
begin
glGenBuffers( 2, @vertexBuffer);
glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[0]);
glBufferData( GL_ARRAY_BUFFER, sizeof(GLFloat)*(high(Vertexes)+1), @Vertexes[0], GL_STATIC_DRAW );
glVertexPointer( 2, GL_FLOAT, 0, nil);
glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[0]);
glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[1]);
glBufferData( GL_ARRAY_BUFFER, sizeof(GLFloat)*(high(TexCoords)+1), @TexCoords[0], GL_STATIC_DRAW );
glTexCoordPointer(2, GL_FLOAT, 0, nil);
glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[1]);
{$Delete vertexBuffer}
end;
Каму очень любопытно, это не что иное, как инициализация буфера вершин и текстурных координат, см. VBO. Но вот в конце мы видим директиву "{$Delete vertexBuffer}", выдуманную разумеется. В этом месте мы по идее должны освободить оперативную память из-под массива vertexBuffer, потому что команда glBufferData уже загрузила его в видео память. Но как удалять такие массивы я не представляю, но ведь Delphi может подчищать их за собой после закрытия приложения (!!).