370 / 133 / 44
Регистрация: 05.02.2015
Сообщений: 895
|
||||||
1 | ||||||
Искажение массивов04.06.2020, 21:56. Показов 1009. Ответов 30
Метки нет (Все метки)
Здравствуйте. Раньше писал под пк, теперь есть проект, который нужно сопровождать на c под микроконтроллер, и в общих чертах столкнулся с проблемой искажением данных:
Когда я вывожу на экран первый массив, выводится все корректно. Второй массив почему-то искажается: в первой половине массива появляется какое-то значение 32, которое я не указывал. Вообще, массив портится именно значением 32. Что это за магическое число? Пробовал переставлять массивы местами, ситуация меняется: тот, который объявлен первым выводится без проблем, тот который вторым - искажается. Почему это может быть. Есть у кого идеи?
0
|
04.06.2020, 21:56 | |
Ответы с готовыми решениями:
30
Искажение дискретных сигналов Искажение формы сигнала Искажение данных из-за пульсо мера Искажение аудиосигнала при ресемплинге Ланцоша |
09.06.2020, 20:35 | 21 |
Метод я выше показал. Верните как было и проверьте.
Такие нюансы надо досконально выяснять. А не "инициализацию поменял, всё заработало, и пофиг". Добавлено через 7 минут Потому что когда устройство разойдётся тысячами штук по стране и за её пределами, да вылезет баг, на который вы вот сейчас махнули рукой, будет слегка неудобно.
1
|
370 / 133 / 44
Регистрация: 05.02.2015
Сообщений: 895
|
|
09.06.2020, 21:03 [ТС] | 22 |
Rius , так я же не спорю. Обязательно проверю, просто написал, как пока "заткнул" дырку, может кто и объяснил бы почему заработало. Спасибо за информацию.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
|
||||||
09.06.2020, 22:25 | 25 | |||||
разумеется как бы я показал принцип выхода за пределы массива
ни один нормальный человек не будет этого делать а вот посмотреть как эта бяка портит, при помощи твоего любимого отладчика,я думаю стоит воочию можно узреть организацию памяти взлом при помощи переполнения буфера известен уже не один десяток лет а вот так
0
|
10.06.2020, 12:38 | 26 |
Все нормально.
Массив попал во флеш как о должен в таких случаях. Но даже если бы он туда не попал, все равно данные не затерлись бы (проверено). Buff попадет в секцию .bss, а value_1 в секцию .data и расположение рядом маловероятно.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
|
|
10.06.2020, 13:13 | 29 |
не знаю, у меня в голове почему то отложилось что TC работает с AVR
подождем автора, пускай скажет что за камень Добавлено через 2 минуты вот он оказывается уже отвечал Вообще не знаю такого зверя
0
|
370 / 133 / 44
Регистрация: 05.02.2015
Сообщений: 895
|
|
11.06.2020, 11:22 [ТС] | 30 |
locm , вы были правы. К ошибке действительно приводило переполнение буфера вывода. Вопрос по сути исчерпался. Обидно, что компиляторы не проверяют такие вещи, и не подсказывают, что кладешь больше, чем можешь себе позволить.
0
|
11.06.2020, 11:31 | 31 |
Это проблема не компилятора. Она возникает во время выполнения.
На переполнении буфера несчётное число багов и дыр построено..
0
|
11.06.2020, 11:31 | |
11.06.2020, 11:31 | |
Помогаю со студенческими работами здесь
31
Что вызывает искажение нижних и верхних пиков сигнала? Даны пять массивов А(4,4),В(4,4),С(4,4),D(4,4)F(4,4).Найти произведение массивов. определение произведения двух массивов оформить в виде процедур искажение окон Искажение изображения Искажение текстур Искажение звука Искажение изображения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |