0

我的代码可以成功编译并运行,但是当我终止它时,偶尔会出现错误消息。

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;

该代码用于转移RGBYCbCr

因为我的程序有将屏幕记录成.avi文件的功能,只要我终止它时出现错误,该文件就无法完美存储(这意味着它无法通过任何播放器打开)。

这个问题让我很困扰,虽然有时什么都没有发生......

我真的很想了解此消息的含义,以及当它再次出现时我该如何解决。

PS 好像和内存有关,请问如何在 BCB 6.0 中查看内存记录??

4

1 回答 1

1

表示EAccessViolation您正在访问无效内存。所以要么:

  1. YCB/或image数组无效。

  2. i和/或j超出数组的范围。

您没有显示足够的代码来演示数组的分配方式和位置、释放数组的方式和位置,或者如何i以及如何j获取它们的值。因此,任何人都无法为您诊断问题。您只需使用调试器并亲自查看应用程序关闭逻辑的实际情况。

于 2013-08-24T07:20:34.380 回答