Т.к. в моей esp32s3 всего 8мб озу и нет виртуальной памяти
Вот как раз бы понять что на что указывает
int *ptr = (int*) (matrix + XMAX);
for (int i = 0; i < XMAX; i++) {
matrix[i] = ptr + YMAX * i;
}matrix -- это указатели на строки массива, это пространство зарезервировано при вычислении указателя ptr, который указывает на данные первой строки. Именно об этом я и написал, что вам нужен не только код, но и рутоничат, а ещё стрим, из которого рутоничат будет получать данные.
Поэтому и поставил "сложный"....
надо знать проблему, а не искать ошибку в коде
Вам не нужно всё моё приложение
Вы либо сталкивались с такой прблемой и знаете ответ, Либо не сталкивались и не знаете ответ.
Вот код, воспроизводящий проблему.
Понятнее стало? Нет, не стало.
Если реализовать классическую ISA ARM или популярную на cегодня ISA Risc-V, то переделать придетcя в основном компиляторы, планировщики задач и обработчики прерываний. Т.е. компилятор и низкоуровневое ПО.
За 15 лет прогаммирования с применением setjmp/longjmp сталкивался только один раз.
Пока не нашёл никаких других обходных путей.
А
begin()внутри тела конструктора куда указывает, если не на сконструированные по умолчанию элементы массива?