Форум: "Основная";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];
ВнизКак освободить память от массива Найти похожие ветки
← →
mazepa (2002-06-15 12:01) [0]Использовав массив довольно больших размеров хотелось бы навсегда о нем забыть, но он весит в памяти.
Что делать?
Заранее благодарен.
← →
Anatoly Podgoretsky (2002-06-15 12:10) [1]Перейти к использованию динамических массивов
← →
mazepa (2002-06-15 12:29) [2]Write to: Anatoly Podgoretsky
Тогда подскажи пожалуйста как установить длинну в 50Мб.
Про setlength можно забыть - это ей не подвластно ???
← →
Malder (2002-06-15 12:45) [3]А как ты объявляешь массив длиной в 50 Mb ?
← →
MBo (2002-06-15 12:47) [4]Ей это подвластно
← →
Malder (2002-06-15 12:53) [5]mazepa, как ты объявляешь статический массив длиной в 50 Mb ?
← →
VictorT (2002-06-15 13:30) [6]Я не большой знаток Паскаля, возник вопрос. А можно ли уже в Паскале обьявлять переменные в любом месте программы, как в Си. Просто в Си переменые удаляются, как только уходят из области видимости, как в этом плане в Паскале? Это ведь тоже один из способов решения проблемы.
← →
Anatoly Podgoretsky (2002-06-15 13:33) [7]mazepa © (15.06.02 12:29)
Борланд и мировое сообщество с тобой не согласны
← →
mazepa (2002-06-15 14:12) [8]что то типа buf:array[0..50000000] of byte;
← →
Anatoly Podgoretsky (2002-06-15 14:18) [9]Это статический массив, тебе же нужен динамический buf:array of byte; или самому выделять память через GetMem
← →
mazepa (2002-06-15 14:24) [10]Почему то D6 не хавает setlength(buf,50000000) вот в чем весь косяк. Может что то надо сделать перед объявлением длинны?
← →
Anatoly Podgoretsky (2002-06-15 14:30) [11]Трудно сказать, ты же не приводишь потребностей, но одназначно можно сказать, что у других работает.
А как переводится слово "хавать"?
← →
mazepa (2002-06-15 14:34) [12]В данном случае: не проходит без ругательств со стороны D6.
← →
NailS (2002-06-15 14:45) [13]Каких ругательств?
← →
Anatoly Podgoretsky (2002-06-15 14:57) [14]Видимо тебе ответ не нужен, раз ты не приводишь ни определение массива, ни выделение памяти, ни даже ругани компилятора
← →
mazepa (2002-06-15 15:07) [15]Ругань компилятора я не помню т.к. нахожусь на работе, где D6 временно был удален. А определение массива я уже приводил (смотри выше)...
← →
Anatoly Podgoretsky (2002-06-15 15:28) [16]Так ты что пытаешься со статическим массивом работать как с динамическим? Камиадзе.
← →
mazepa (2002-06-15 15:36) [17]Не знаю о чем ты там думаешь но не кто не пытается и даже не пробовал пытатся работать таким образом...
Уточняю: если не получатся Setlength(...) для дин.мас. такой длинны то как освободить память от стат.мас. ???
← →
Anatoly Podgoretsky (2002-06-15 15:40) [18]С динамическом массивом все получается, даже для такой маленькой длниы, а вот статическим у тебя ничего не получится, вдумайся только в понятия статический динамический
← →
mazepa (2002-06-15 15:45) [19]Все понятно... это значит что меня кинули с D6 подсунув не Delphi6 a Dermo6...
Спасибо за содержательную беседу.
← →
SPeller (2002-06-15 17:22) [20]2 mazepa © (15.06.02 15:45)
Объявляем динамический массив
var dmas: array of byte;
Он имеет нулевую длину, соответственно памяти не "хавает". Затем раздуваем его до 50 Мб
setlength(dmas,50000000);
Делаем с ним всё что надо, а в конце высвобождаем отведённую ему память
setlength(dmas,0);
Вот и всё, всё прекрасно работает и D6 ниразу не ругается. А статический массив будет "хавать" память до тех пор, пока не выйдешь из процедуры, в которой он объявлен. Ты только подумай, если бы не освобождались все переменные всех функций, то что бы тогда было?
← →
NailS (2002-06-15 18:32) [21]
> mazepa © (15.06.02 15:45)
> Все понятно... это значит что меня кинули с D6 подсунув
> не Delphi6 a Dermo6...
;) А ты на С++ перейди, там точно получится ;)))))), тебе, как человеку с высшим образованием, это должно быть известно.
2 All,
Сорри за флейм, не сдержался.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c