Обработка на слики - Непозната грешка во сегментирањето

  • Креатор на темата Креатор на темата Soham1087
  • Време на започнување Време на започнување
Член од
16 јуни 2022
Мислења
11
Поени од реакции
0
Возраст
28
Во C++, работам на проект за обработка на слики. Сепак, наидов на збунувачки проблем - дефект на сегментирање (SIGSEGV). При обработка на помали фотографии, апликацијата работи нормално, но при обработка на поголеми, паѓа со оваа шифра за грешка.

Претпоставувам дека е проблем со меморијата, но не можам да ја најдам грешката. Доделувам 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;
Се обидов рачно да го прегледам кодот и да дебагирам со помош на gdb и Valgrind, но сепак сум заглавен. Кога користев Гаусов метод за замаглување, Валгринд покажа дека можам да пристапам до меморијата надвор од доделениот бафер:
Код:
void applyGaussianBlur(unsigned char* image, int width, int height) {
    // ... Gaussian blur algorithm ...
    // accessing data beyond allocated buffer size
}
За да го поправам ова, го прочитав овој пост од scaler за дополнителни информации, но не сум сигурен како да го решам овој проблем бидејќи се чини дека алгоритмот работи добро. Погледнав низ форумите, но не најдов директни одговори. Секој совет или предлог ќе биде многу ценет. Подготвен сум да учам и да растам, но овој дефект на сегментирање ме запна.

Ти благодарам за твојата помош!
 
Пробуваш да пристапиш до меморија на која немаш пристап. Проблемот го има подетално образложено на StackOverflow форумот, повеќе можеш да прочиташ таму.
 
Зашто ми вика вашиот податок е преголем кога пробам да прикачам слика на форум, како тоа да го подесам.
Пс: не знам соодветна тема за прашањево
 
Зашто ми вика вашиот податок е преголем кога пробам да прикачам слика на форум, како тоа да го подесам.
Пс: не знам соодветна тема за прашањево
Соучесник беше со тие поради кои ја затворија соодветната тема :)
Во C++, работам на проект за обработка на слики. Сепак, наидов на збунувачки проблем - дефект на сегментирање (SIGSEGV). При обработка на помали фотографии, апликацијата работи нормално, но при обработка на поголеми, паѓа со оваа шифра за грешка.

Претпоставувам дека е проблем со меморијата, но не можам да ја најдам грешката. Доделувам 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;
Се обидов рачно да го прегледам кодот и да дебагирам со помош на gdb и Valgrind, но сепак сум заглавен. Кога користев Гаусов метод за замаглување, Валгринд покажа дека можам да пристапам до меморијата надвор од доделениот бафер:
Код:
void applyGaussianBlur(unsigned char* image, int width, int height) {
    // ... Gaussian blur algorithm ...
    // accessing data beyond allocated buffer size
}
За да го поправам ова, го прочитав овој пост од scaler за дополнителни информации, но не сум сигурен како да го решам овој проблем бидејќи се чини дека алгоритмот работи добро. Погледнав низ форумите, но не најдов директни одговори. Секој совет или предлог ќе биде многу ценет. Подготвен сум да учам и да растам, но овој дефект на сегментирање ме запна.

Ти благодарам за твојата помош!
Некој поинтер излегува надвор од меморијата што си ја алоцирал.
Стај код да видиме или дебагирај да видиш кај паѓа или клај try/catch на некои сомнителни места да видиш.
 

Kajgana Shop

Back
На врв Bottom