XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
FunkieFoO

offline
Опыт: 7,159
Активность:
ну я знаю когда объявляешь локалку там мусор
вроде бы даже в макро языках программирования при обьявлении переменной в ней находиться "мусор" и ее нужно инициализировать с нужным значением, либо давать ей значение перед вовлечением ее в какой либо процесс,
Старый 04.01.2010, 00:12
Toadcop

offline
Опыт: 54,313
Активность:
integer array arr
int lol(){
echo(I2S(arr[3455]))
}
?
по твоей теории это при разных запусках карты будет иметь разные значние О_О
у меня всегда 0
про "локалку" спорный вопрос надо смотерть. ибо мусор не означяет что не используемая информацыя это обычно рандом число... (или 0) (остатки от других данных)
Старый 05.01.2010, 20:13
DioD

offline
Опыт: 45,134
Активность:
джаз запускается на виртуальной машине, не может быть в локалках мусор так как это не выход в память.

массивы заполнены нулями

переменные не заполнены ничем

всё просто.
Старый 05.01.2010, 20:36
ScorpioT1000
Работаем
offline
Опыт: отключен
DioD, ответ неверный.
вар это не фреймворк (тот же рб тому доказательство)
иначе бы не было i2c и прочего ;)
ну, если ты знаешь, о чём я
Toadcop, я подозреваю что он возвращает ноль не потомучто ты аллочил массив, а потомучто ты обращаешься к неалоченому элементу, т.е. вар "специально" это делает)
ScorpioT1000 добавил:
в принципе, мы можем это проверить - посмотрим сколько было памяти До и сколько стало После
ScorpioT1000 добавил:
про "локалку" спорный вопрос надо смотерть. ибо мусор не означяет что не используемая информацыя это обычно рандом число... (или 0) (остатки от других данных)
ты говорил что при обращении к неинит локалке вар убивает поток ?
Старый 07.01.2010, 13:51
DioD

offline
Опыт: 45,134
Активность:
РБ как раз доказательство того, что вар работает на виртуальной машине, так как указатель юнита, как и любого другого хендла это выход не в память, а в аллокатор виртуальной машины.


байткод на то и байткод что выходил за пределы памяти выделяемой виртуальной машиной.
Старый 07.01.2010, 13:56
ScorpioT1000
Работаем
offline
Опыт: отключен
матрос очевидность) да, вар интерпретирует jass код - эти слова нам многое объяснили !
это не выход в память
вот это фэлс
Старый 07.01.2010, 14:07
agentex

offline
Опыт: 34,834
Активность:
я подозреваю что он возвращает ноль не потомучто ты аллочил массив, а потомучто ты
обращаешься к неалоченому элементу, т.е. вар "специально" это делает)
из этого можно предположить, что при обращении к неалоченному элементу вар пишет туда 0 и возвращает его нам
Старый 07.01.2010, 14:10
ScorpioT1000
Работаем
offline
Опыт: отключен
вот насчет пишет я неуверен ибо он неалочен :) тоесть скажем у нас выделено 16 элементов, ты обращаешься к 256, вар вернет нуль, но не будет выделять память 256 элементов
но это теория
ScorpioT1000 добавил:
нет, я ошибся :)
аллок при обращении - мегабайт памяти между прочим:
library my initializer my_init

#include "cj_types.j"

int array a0
int array a1
int array a2
int array a3
int array a4
int array a5
int array a6
int array a7
int array a8
int array a9

void echo(string s) { DisplayTextToPlayer(Player(0),0.0,0.0,s) }

// check values
void my_test1() {
    echo("values=")
    echo(I2S(a0[8190]))
    echo(I2S(a1[8190]))
    echo(I2S(a2[8190]))
    echo(I2S(a3[8190]))
    echo(I2S(a4[8190]))
    echo(I2S(a5[8190]))
    echo(I2S(a6[8190]))
    echo(I2S(a7[8190]))
    echo(I2S(a8[8190]))
    echo(I2S(a9[8190]))
    echo("ok")
}

// set values
void my_test2() {
    echo("1 --> [8190]")
    a0[8190] = 1
    a1[8190] = 1
    a2[8190] = 1
    a3[8190] = 1
    a4[8190] = 1
    a5[8190] = 1
    a6[8190] = 1
    a7[8190] = 1
    a8[8190] = 1
    a9[8190] = 1
    echo("ok")
}

private trigger trg1 = CreateTrigger()
private trigger trg2 = CreateTrigger()

void my_init() {
    TriggerRegisterPlayerChatEvent(trg1,Player(0),"1",true)
    TriggerAddAction(trg1,function my_test1)
    TriggerRegisterPlayerChatEvent(trg2,Player(0),"2",true)
    TriggerAddAction(trg2,function my_test2)
}

endlibrary
Прикрепленные файлы
Тип файла: w3x ArrayAllocation_test1.w3x (7.7 Кбайт, 13 просмотров )
Старый 07.01.2010, 15:05
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:29.