, benim kodunda buEXC_BAD_ACCESS? iOS uygulamasında
typedef struct _Pixel {
signed char r;
signed char g;
signed char b;
} Pixel;
benzeyen bir yapı var, calloc bu bir dizi tahsis:
Pixel* buff = calloc(width * height, sizeof(Pixel));
Şimdi, bu simülatörde mükemmel çalışıyor ancak aygıtta, buff[width * height - 1]
(buff
öğesinde son öğe) erişmeye çalışırsanız, bir EXC_BAD_ACCESS
alırsınız.
Bu bana mantıklı değildi, bu yüzden hizalama sorunu bir tür olsaydı bir heves denedim böylece hata ayıklama birkaç saat sonra, ben, merak:
typedef struct _Pixel {
signed char r;
signed char g;
signed char b;
signed char padding;
} Pixel;
boyutunu yapma Piksel, ikisinin gücü.
Bu, EXC_BAD_ACCESS
düzeltir, ancak çok tuhaftır. Burada neler olup bittiği hakkında herhangi bir bilgisi yok mu? Sadece altta yatan sorunu maskeleme yaparak maskeleme ya da hizalama gerçekten kötü bir erişime neden olabilir (hizalamanın sadece performans üzerinde değil, doğrulukta bir etkisi olduğunu düşündüm).
Hey Bill iki şey. SO bir karakteri düzenlememe izin vermediğinden, calloc'ta yazım hatası var. Sonunda parantez eksik. Ana sorununuza gelince, bu tür bir şey genellikle Ya da başka bir yerde tutkuyu yeniden birleştirirseniz ya da eriştiğiniz zamanlardan birinde yanlışlıkla dizin dışı kalmanız durumunda olur. Son öğeye erişmeye çalışmadan önce * buff * 'a başka bir şey yapar mı? – Lefteris
genişlik ve yükseklik değerlerinizi tekrar kontrol edin ... !!! –
Bu, aylarca çalışan bir koddur - tek fark, CGFloat'tan yapı üyelerinin türünü imzalı baytlara değiştirdiğimdir. Yani genişlik ve yükseklik sorun değil - yapının düzeni ile ilgili bir şey. – Bill