|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как освободить память, занимаемую ст. массивом
Привет всем!
Часто-часто пишут во всякого рода статьях о статических и динамических массивах. Но нигде не пишут, как же всё таки удалять эти статические массивы. var M:array[0.99] of Cardinal; Как мне это освободить? Делаем'c разные игры. Искать на glscene.ru |
#2
|
||||
|
||||
Никак, на то он и статический.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
Или же так... =)
Код:
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; |
#4
|
||||
|
||||
Ну так вы освободите память выделенную под переменную StaticArray
А вот сам массив TStaticArray так вроде не должен освобождаться. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Только это не статический массив, да и не массив вообще
Вот тоже самое, только тут видно что массив совсем нипричем: Код:
type TStaticArray = array[0..255] of Byte; PStaticArray = ^TStaticArray; var p:Pointer; begin GetMem(p,SizeOf(TStaticArray)); TStaticArray(P^)[25]:=25; ShowMessage(IntToStr(TStaticArray(P^)[25])); FreeMem(p); end; Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
|||
|
|||
Этот код приобретет смысл, как только вы объявите несколько переменных типа TStaticArray. И каждая из них будет кушать память в размере SizeOf(TStaticArray).
Если уж на то пошло, то мы не можем освободить память, отведенную и под тип динамического массива. Те самые 4 байта. И там тоже вся работа сводится к операциям с указателями. Стало быть, динамические массивы тоже не надо называть массивами, по вашему... Я так поняла, что человеку надо именно освободить память, отведенную под переменную — «экземпляр типа», если так можно выразиться. |
#7
|
|||
|
|||
Цитата:
Но что-то этот код странный: Цитата:
Код:
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; Делаем'c разные игры. Искать на glscene.ru |
#8
|
|||
|
|||
Цитата:
Цитата:
|