Я столкнулся с каким-то странным поведением в моем коде.
Он выдает ошибку нарушения доступа, когда я запускаю его и через отладчик мне удалось найти строку, которая его вызывает:
for( int x=0; x<width; x++) {
int current = edgeKernelXY(left+x,top+y,true,0);
....
}
Я поместил точку отладки в метод edgeKernelXY, и код даже не попал в метод.
Следующее, что я проверил, было то, какие значения я передаю в него. Слева, сверху и у кажутся нормальными. Однако, согласно отладчику, x = 19840810 и current = 19840810. Я не понимаю, как это могло произойти, особенно если бы я объявил x в 0 в начале цикла. Ширина верна на 40.
x и current не были объявлены где-либо еще в области действия forloop. Что может быть не так?
EDIT:
Я изменил код следующим образом:
for( int x=0; x<width; x++) {
int current = edgeKernelXY(left,top+y,true,0);
if( current > THRESHOLD &&
edgeKernelXY(left+x,top+y,true,1) > THRESHOLD &&
edgeKernelXY(left+x,top+y,true,2) > THRESHOLD ) {
} else {
current = 0.0f;
}
В частности, я изменил left + x при первом вызове edgeKernelXY на left. Кажется, это выполняется, и второй вызов edgeKernelXY показывает, что x правильно установлен на 0. Однако поведение не то, что я хочу. Слева + х до сих пор сводит меня с ума значения х, что вызывает нарушение прав доступа.
for( int x=0; x<width; x++) {
int current;
current = 0;
current = edgeKernelXY(left+x,top+y,true,0);
Также показывает проблемы с током.