C++builder 项目在BCB 6.0中引发了异常类EAccess冲突

C++builder 项目在BCB 6.0中引发了异常类EAccess冲突,c++builder,C++builder,我的代码可以成功编译并运行,但是当我终止它时,偶尔会出现错误消息 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. 我还注意到错误总是依次发生在这三行代

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

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中的内存记录?

一个
EAccessViolation
表示您正在访问无效内存。因此,要么:

  • YCB
    和/或
    image
    数组无效

  • i
    和/或
    j
    超出数组的范围


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

    您应该打开CodeGuard。这是一种检测此类错误的方法。您还可以将行分割成更小的块,以缩小错误发生的范围。也许i或j是负数,或者对于数组来说太大了?非常感谢,结果证明我在指针的内存分配上犯了一个错误,我还是解决了它。很抱歉在很长时间后看到这个答案。