Форум: "Основная";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
Вниз
Выделение памяти Найти похожие ветки
← →
Still Swamp (2003-04-11 11:55) [0]Как выделить память под некоторый список из Single, и как получить доступ к i-тому элементу?
← →
MBo (2003-04-11 11:56) [1]динамический массив устроит?
← →
Skier (2003-04-11 11:56) [2]дин. массив не устроит ?
← →
Skier (2003-04-11 11:57) [3]>MBo
Однако ! :)))
← →
MBo (2003-04-11 11:57) [4];-)
← →
Palladin (2003-04-11 12:01) [5]какие вы синхронные..
← →
Still Swamp (2003-04-11 12:07) [6]а он переварит скажем десяток миллионов записей.
скорее всего нет.
← →
malkolinge (2003-04-11 12:09) [7]Getmmem
Структура списка
Plist=^TListElement
TListElement=record
value:Integer
Nextvalue:Plist
end;
Всегда нужно помнить голову списка, т.е указатель на первый елемент. А далее тривиально.
← →
MBo (2003-04-11 12:10) [8]даже сто миллионов переварит, если памяти и свопа хватит
← →
Skier (2003-04-11 12:10) [9]>Still Swamp
Ого !
А цель всего этого какая ?
← →
malkolinge (2003-04-11 12:16) [10]
> а он переварит скажем десяток миллионов записей.
> скорее всего нет.
мой переварит, особенно если будешь добавлять елементы по мере надобности
← →
evvcom (2003-04-11 12:21) [11]А ты посчитай 10 млн. * 4 байта = (примерно) 40 Мег.
← →
Still Swamp (2003-04-11 12:21) [12]а еще вопрос - как располагается в памяти это изделее?
var
FBBuf: array of Single;
begin
SetLength(FBBuf, 10);
последовательно?
1 байт первого элемента
2 байт первого элемента
3 байт первого элемента
4 байт первого элемента
1 байт второго элемента
.... и тд?
← →
Skier (2003-04-11 12:25) [13]SetLength(FBBuf, 10) - да
а вот SetLength(FBBuf, 10000000); - не думаю :)
← →
Still Swamp (2003-04-11 12:30) [14]OpenGL выгружает данные для GL_FEEDBACK в буффер Single.
У меня 100000 тысяч pointov, для каждого может потребоваться 5 элементов. Вот и нужно организовать буффер. Только то и всего.
Таки вот и проблема.
А как это сделать?
← →
Palladin (2003-04-11 12:37) [15]
> malkolinge © (11.04.03 12:09)
ты хоть подумал насколько долго будет работать очередь с десятком миллионов записей?
← →
Still Swamp (2003-04-11 12:38) [16]это не имеет значения.... меня интересует как организовать буффер.
← →
evvcom (2003-04-11 12:40) [17]По-моему по-порядку и для 10 млн. будет. Создай, обратись к одному из последних индексов массива и посмотри дизассемблером.
← →
Palladin (2003-04-11 12:41) [18]
> Still Swamp (11.04.03 12:21)
да последовательно...
← →
Still Swamp (2003-04-11 12:43) [19]да нет - в том то и дело.
он динамический массив похоже создает в области своих локальных данных.
а в нее не вмещается, компилятор похоже начинает шаманить. обратиться то он обращается, но по всей видимости блок не непрерывно располагается.
мне бы GetMem, но как потом эти значения собирать побайтно......
← →
Skier (2003-04-11 12:46) [20]
> мне бы GetMem, но как потом эти значения собирать побайтно......
Move(...)
← →
Palladin (2003-04-11 12:46) [21]имхо
этого не может быть..
p:array of byte;
это ссылка на последовательность данных указатель один и цепочка данных одна...
← →
Still Swamp (2003-04-11 12:47) [22]ну хорошо.
допустим ты отвел 200 значений. они расположились подряд.
а потом еще 200. ну и не факт что эти последние пристроятся в хвост к первым.
← →
Still Swamp (2003-04-11 12:51) [23]к стати, вот что в Helpe написано. Existing characters in the string or elements in the array are preserved, but the content of newly allocated space is undefined.
← →
Palladin (2003-04-11 12:52) [24]можно конечно посмотреть CPU... но лень...
я думаю что компилятор возьмет новую область памяти в 400 и туда все перенесет со старой, а старую освободит...
← →
Skier (2003-04-11 12:53) [25]>Still Swamp
> не факт что эти последние пристроятся в хвост к первым.
Но менеджер памяти Delphi всё сделает за тебя...
← →
Still Swamp (2003-04-11 12:54) [26]неа - так точно не будет. в хелпе и написано именно это.
может всетаки есть идеи кроме Move() - уж очень стремное мероприятие.
← →
Still Swamp (2003-04-11 12:56) [27]да менеджер то сделает, я не соменваюсь.... но OpenGL то будет выгружать свои данные, с адреса @BFBUF и последовательно.... :(
← →
Palladin (2003-04-11 12:58) [28]посмотри реализацию DynArraySetLength в модуле System.pas
← →
Still Swamp (2003-04-11 13:44) [29]Для FAQ.
var
FBBuf: array of Single;
pt:pointer;
begin
GetMem(PT, DataObject.RecordList.Count*5*4);
FBBuf:=pt;
← →
Palladin (2003-04-11 14:02) [30]а какой вопрос?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c