почему ошибка указывает на конструктор, а не на arr?
как мне создать пространство для массива (не выделяя дин память) и не создавать по умолчанию их?
Я ведь нигде ничего по умолчанию не создаю.
он указывает на массив: type arr[N];
static_array
. Т.к. в моей 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 сталкивался только один раз.
В
producer_maybe_push()
нет никакого упорядочивания доступа кhead
вообще, поэтому если в ходе выполнения потока в котором вызываетсяproducer_maybe_push()
нет никаких других барьеров, то в качестве A нельзя будет найти никакой побочный эффект меняющийhead
.