- Член од
- 16 јуни 2022
- Мислења
- 11
- Поени од реакции
- 0
Во C++, работам на проект за обработка на слики. Сепак, наидов на збунувачки проблем - дефект на сегментирање (SIGSEGV). При обработка на помали фотографии, апликацијата работи нормално, но при обработка на поголеми, паѓа со оваа шифра за грешка.
Претпоставувам дека е проблем со меморијата, но не можам да ја најдам грешката. Доделувам RAM меморија за податоците за сликата и соодветно ги расчистувам:
Се обидов рачно да го прегледам кодот и да дебагирам со помош на gdb и Valgrind, но сепак сум заглавен. Кога користев Гаусов метод за замаглување, Валгринд покажа дека можам да пристапам до меморијата надвор од доделениот бафер:
За да го поправам ова, го прочитав овој пост од scaler за дополнителни информации, но не сум сигурен како да го решам овој проблем бидејќи се чини дека алгоритмот работи добро. Погледнав низ форумите, но не најдов директни одговори. Секој совет или предлог ќе биде многу ценет. Подготвен сум да учам и да растам, но овој дефект на сегментирање ме запна.
Ти благодарам за твојата помош!
Претпоставувам дека е проблем со меморијата, но не можам да ја најдам грешката. Доделувам RAM меморија за податоците за сликата и соодветно ги расчистувам:
Код:
const int imageWidth = 1920;
const int imageHeight = 1080;
const int imageSize = imageWidth * imageHeight * 3;
unsigned char* imageData = new unsigned char[imageSize];
// ... image processing ...
delete[] imageData;
Код:
void applyGaussianBlur(unsigned char* image, int width, int height) {
// ... Gaussian blur algorithm ...
// accessing data beyond allocated buffer size
}
Ти благодарам за твојата помош!