Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ок. Я не понимаю. А вы понимаете? Точно понимаете? Точно точно?
Спор сводится к следующему утверждению:
...
То было не об общем споре, а о ситуации, касающейся одного поста, и я объяснил в чем проблема. Ладно, катастрофы не случилось.
Объявил массив double x[268435448];
Такой же массив в функции OnStart().
Еще сделал рекурсивный вызов с глубиной LONG_MAX.
Никаких проблем.
Не использовать статические массивы?
большие. если размер массива небольшой, постоянен и заранее известен, статические лучше и наверное быстрее.
большие. если размер массива небольшой, постоянен и заранее известен, статические лучше и наверное быстрее.
Хотелось бы иметь способ получить список статических переменных/массивов и их размеры. Наверное, нужен анализатор кода, как здесь сделано.
ЗЫ Наверное, статический string-массив и double-массив - совсем разные вещи.
ЗЫ Наверное, статический string-массив и double-массив - совсем разные вещи.
string по сути внутренний класс, состоящий из указателя и int размера, т.е. для double массив будет занимать условно в 1.5 раза меньше места
не думаю что на это есть смысл сильно заморачиваться, если только у вас нет статических массивов с миллионами элементов.
Не использовать статические массивы?
Выходит в MQL по сути есть четыре вида данных:
Если стек оставить функциям и их локальным переменным, остается три типа с которыми можно работать. Лично я считаю (и это только мое мнение), что данные, с автоматическим сроком жизни хорошо сочитают преимущества двух предыдущих типов, но при этом не обладают их недостатками. Данные определенные с автоматическим указателем также хорошо прогнозируемы и безопасны как статические, и при этом также гибки как динамические, с ручным управлением. Под прогнозируемостью я понимаю сценарии, когда не требуется делать доп. проверки на битость указателей и задумыватся над тем, не удалил ли кто-то другой эти данные уже раньше. Под гибкостью я подразумеваю сценарии, когда с данными, на которые ссылается автоматический указатель, можно работать как с обычным указателем, передавая этот указатель какой-либо функции, либо, в отношении массивов, делать их ресайз.
Для иллюстрации сказанного, можете сравнить первончальный код предполженный Ihor Herasko и этот же код приведенный мной к форме POINTER_AUTOMATIC. Нет ни каких лишних проверок и инициализаций, нет вызова оператора delete 60 000 000 раз. Все это экономит силы, время и, что не маловажно, ресурсы, при том ощутимо. Если разобратся, то необходимости работы с указателями практически никогда нет. Всегда можно написать такой алгоритм, где бы эта работа сводилась бы либо к минимому, либо вообще к нулю. Например в моих кодах я никогда не управляю объектами вручную, просто в этом как-то не возникает необходимости. Что касается статических массивом то иногда и приходится использовать, например что бы вшить в программу нужные ей данные, но это на столько спецефические вещи, что обычным пользователям они я предполагаю не нужны. Лучше всего использовать готовые коллекции типа CArrayObj, либо свои собственные. Сейчас шаблоны и возможности MQL позволяют создать довольно гибкие вещи которые существенно лучше статических массивов.
Vasiliy Sokolov #:
Статические, предопределенные данные. Вшиваются в программу во время компиляции и больше не изменяются. Располагаются в некой области памяти private. Например к ним относятся статические массивы вида char[1024].
Если массив не инициализирован,
зачем его зашивать в EX5?
Если массив не инициализирован,
зачем его зашивать в EX5?
Да, верно, неинициализированные не вшиваются конечно. Инициализированые вшиваются. Но размер обоих типов определяется во время компиляции и больше не меняется. Т.е. статические массивы условно можно разделить на две группы.
Нет в эмкуле сборщика мусора.
Официально как бы да. Неофициально, многие штуки свидетельствуют что он все-таки есть: