Ошибки, баги, вопросы - страница 3377

 
fxsaber #:

Написал же.


Напишите сценарий, где эта "ошибка" приводит к проблемам.


ЗЫ

Переменные (и массивные) в стеке. Элементы массива - нет.

Ну, смотри. В справке написано, что деструкторы автоматически создаваемых объектов вызываются в порядке обратном их созданию? Соответственно, будьте добры обеспечить соблюдение. Ну, или опишите его в документации. Мало ли для чего я заложился на это правило.

PS/ В доках написано, что любой массив, даже статический, суть объект динамического массива. Скорее всего, под капотом там работа вариации на тему std::allocator, а вот там, в глубинах вызовов из метода deallocate, как раз и есть последовательный, явный вызов деструкторов. 

PPS. А вообще, ожидаемое поведение при выходе массива из scope:  If expression is not a null pointer and the deallocation function is not a destroying delete (since C++20), the  delete  expression invokes the destructor (if any) for the object that's being destroyed, or for every element of the array being destroyed (proceeding from the last element to the first element of the array).
 
fxsaber #:

ЗЫ

Переменные (и массивные) в стеке. Элементы массива - нет.

Так Вы не объяснили почему статический массив создается не в стеке

При том что - цитата: "Массивы на основе стека быстрее выделяются и получают к ней доступ, чем массивы на основе кучи"
 
A100 #:

Так Вы не объяснили почему статический массив создается не в стеке

При том что цитата: "Массивы на основе стека быстрее выделяются и получают к ней доступ, чем массивы на основе кучи"
На стеке он создается. Вроде бы даже проверял как-то. Просто создание и уничтожение производится через их allocator.
 
Aleksey Vyazmikin #:

В какое время получаете ошибку?

Кажется я понял. Если сигнал возникает на баре, который включает неторговые часы (с 23:55 до 0:15), возникает ошибка. И пофиг, что торговля идет только на первом тике. Придется как-то это обрабатывать. Спасибо за помощь.

 

А зачем такое сообщение в терминале? Терминал перестанет работать?

2023.08.31 08:26:26.846        please upgrade to Windows 10 Codename 21H1 (november 2021 update) or later


У меня Win10 2019 LTSC корпоративная.

 
W0wa0 #:

Кажется я понял. Если сигнал возникает на баре, который включает неторговые часы (с 23:55 до 0:15), возникает ошибка. И пофиг, что торговля идет только на первом тике. Придется как-то это обрабатывать. Спасибо за помощь.

Рад, что помог.

 
В одном случае компилятор выдает предупреждение, а в другом нет:
bool f( uint x )
{
    if     (x != -1); //(1)//Warning: sign mismatch
    else            ;
    return (x != -1); //(2)
}

А какая принципиальная разница между (1) и (2) ?

 
Это нормально, что такой код компилируется?
void OnStart()
{
  #ifdef // __MQL5__
  #else
  #endif
}
После #ifdef нет имени макроса.
 
fxsaber #:
Это нормально, что такой код компилируется? После #ifdef нет имени макроса.

Так тоже непорядок:

#ifdef 111
#else
#endif
 
В последнем build 3902 появилась какая то трудноуловимая ошибка при компиляции - если параметрический макрос расположен много раньше применения то выдается какая то несуществующая абсурдная ошибка, а если его продублировать непосредственно перед применением, то все нормально - не смог с ходу разобраться