好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Error:AccessViolation

错误: 在 EVC4 调试模式下,出现错误。 错误提示: Error Access Violation 点击确定后, EVC 停止在文件: D:/Program Files/Windows CE Tools/wce500/5300Pro /Mfc/Src/strcore.cpp 的函数: LPTSTR CString::GetBuffer(int nMinBufLength) 中的语句: if

错误:

在 EVC4 调试模式下,出现错误。

错误提示: Error Access Violation

点击确定后, EVC 停止在文件: D:/Program Files/Windows CE Tools/wce500/5300Pro /Mfc/Src/strcore.cpp 的函数: LPTSTR CString::GetBuffer(int nMinBufLength) 中的语句: if (GetData()->nRefs > 1 || nMinBufLength > GetData()->nAllocLength) 。

解决问题:

1 出现错误的是一个 CString 类型的数组,因为数组比较大,考虑到可能是应用的 stack 太小。但将 stack 的空间增大,问题仍然没有解决;将数组的大小减小,同样问题没有解决。

2 详细调试发现 CString 类在 GetData 时,指针 m_pchData 为空。原因不明 !

3 考虑最近的修改,寻找可能引起此问题的原因。因为一天前,此应用还是可以正常运行的 !

从稳定的版本到现在,只增加了一个数组和两个宏定义。

原因肯定在这里,详细阅读代码发现,宏定义使用错误。很简单的错误:数组是用小的宏定义的,初始化时却错误的写成大的宏。

导致一个 CString 数组变量的部分成员的空间被占用。

查看更多关于Error:AccessViolation的详细内容...

  阅读:44次