我的代码可以成功编译并运行,但是当我终止它时,偶尔会出现错误消息。
Project raised exception class EAccess Violation with message 'Access violation at address 0040..... in module `00F.....`. Write of address ..........' Process stopped. Use step or Run to continue.
我也注意到错误总是在这三行代码中发生。
YCB[i][j].R=((65.738*image[i][j].R)+(129.057*image[i][j].G)+(25.064*image[i][j].B))/256+16;
YCB[i][j].G=((-37.945*image[i][j].R)+(-74.494*image[i][j].G)+(112.439*image[i][j].B))/256+128;
YCB[i][j].B=((112.439*image[i][j].R)+(-94.154*image[i][j].G)+(-18.285*image[i][j].B))/256+128;
该代码用于将RGB
转移到YCbCr
因为我的程序有一个将屏幕记录到.avi文件中的功能,只要在我终止它时出现错误,文件就无法完美存储(这意味着它无法通过任何播放器打开)。
这个问题困扰我,虽然有时候什么也没发生......
我真的想了解这条消息的含义,以及如何在再次出现时解决它。
P.S似乎它与内存有关,如何检查BCB 6.0中的内存记录?
答案 0 :(得分:1)
EAccessViolation
表示您正在访问无效内存。所以:
YCB
和/或image
数组无效。
i
和/或j
超出了数组范围。
您没有显示足够的代码来演示数组的分配方式和位置,数组的释放方式和位置,以及i
和j
获取其值的方式。因此,任何人都无法为您诊断问题。您只需使用调试器并亲自了解应用程序关闭逻辑的实际情况。