Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Максимальная длина массива (http://www.flasher.ru/forum/showthread.php?t=119472)

Psycho Tiger 21.12.2008 21:17

Максимальная длина массива
 
Интересует следующий вопрос - я создал массив. Сколько максимум элементов я могу туда впихнуть? Если скажем, максимальная длина массива 1000, имеется ли разница, все 1000 индексов забиты, или только 2? Скажем,
Код AS3:

arr[0]=1;
arr[999]=2;

А так же - насколько сильно запись выше забивает память и насколько нежелательно её использовать?

Nirth 21.12.2008 21:26

Каждая ячейка массива резервирует себе адрес в памяти, даже если в ней хранится null.

Могу рекомендовать использовать Dictionary, во первых достаточно легко удалять ячейки, во вторых можно устанавливать "слабые ссылки", тольк нету автоматического индексирования.

iNils 21.12.2008 21:28

У флеша массив динамический, и место в памяти под него выделяется динамически.

Nirth 21.12.2008 21:32

Вложений: 1
Во, 1 миллион null'ов в массиве занимает 3+ килобайта:
Вложение 21112

etc 21.12.2008 21:49

3 мегабайта :)

Nirth 21.12.2008 21:59

А да точно, там миллиард там 10 миллиардов а не 1 миллион ячеек =)

ramshteks 21.12.2008 23:59

я может не в тему, а как ты милион нуликов записывал?
если ты в цикле записывал то не удивительно... так как нулл у нас флеш всегда отличит от 0 а значит это данные а под данные нужно место. Вот интересно если действительно заполнить тока 0ой и 1000000ый элемент то выделится ли память для промежуточных элементов?

Nirth 22.12.2008 01:02

Не 0 а null.
Код AS3:

private var array:Array;
 
public function createArray():void
{
    array = [];
    for(var i:uint = 0; i < 1000000000; i ++)
        array.push(null);
}


ramshteks 22.12.2008 03:49

ну я собственно о нуллэ и говорил, а не о нуле ))

Psycho Tiger 22.12.2008 10:59

Дак постойте
Код AS3:

var arr:Array=new Array();
arr[0]=1;
arr[100]=2;
trace(arr[5]); //undefined, а никак не null



Часовой пояс GMT +4, время: 14:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.