char *pTest = new char[5];
try
{
pTest[8] = 'a';
}
catch(...)
{
TRACE("Wrong");
delete[] pTest;
}可是这样根本捕捉不到异常

解决方案 »

  1.   

    好像没有什么办法能够让程序自动识别普通数组的越界问题,你提到情况根本不会抛出异常,不能实现你的要求的。
    其实C/C++处理数组和指针一样,只是简单的按照指针的位置和增量进行计算,它才不管指向的地方是否是数组的一部分呢。
    只有自己时刻小心数租不要越界,或者使用复杂的自定义或者VC定义的数据结构,通过重载[]运算符,来保证数组不越界,代价是运行效率的严重下降。
    当然,数租越界严重时,系统会提示程序非法操作,或者系统会崩溃。
      

  2.   

    但是我把越界操作放到try的域里面后,是不会提示非法操作的。
      

  3.   

    try
    没有办法捕获数组越界
    就像没有办法捕获指针错误一样