那是因为VC在分配空指针的时候并不是null,而是有一个值的(好象是0xcdcdcdcd)。
如果你在构造函数中将其初始化为NULL,就不会有问题。
CMyClass::CMyClass()
{
pNodList = NULL;
pBondList= NULL;
}

解决方案 »

  1.   

    我已经在构造函数中将它们初始化为NULL.另外函数Function()中已为其分配了空间使用了,并且保证没有越界。
      

  2.   

    不对吧!你应该写 delete pNodList 和 delete pBondList 就可以了吧!
    那两个 [] 没必要,这样就成了释放N维数组了。
      

  3.   

    再补充一下,你的 pNodeList和 pBondList该不会是一个链表吧?如果是,你就要
    延着链表一个一个 delete 了,用 delete[] 是删除这样的内存:
    p = new char[20][20]; 用 delete是删除一块一次分配的内存,链表的内存不是一次
    分配的。
      

  4.   

    你在使用内存时有问题.请你仔细检查一下pNodeList的用法.
      

  5.   

    真是非常惭愧,后来我仔细检查了程序,原来是sscanf(...)这个函数捣的鬼,我在
    NODE中定义了成员 short x, 调用sscanf(strbuf, "...%d...", &x)向其中写值(向
    pNodeList链表中传值),结果向链表中的上一个元素写值时总是把下一个元素的某些值
    覆盖,这样在写最后一个值的时候发生了越界(其实在前面就越界了).改成sscanf(...,
    "...%hd...", &x)后错误消除。原来是short对应着%hd,看来基本功太糟了。不过我
    仍感到很意外,很滑稽。
    另外多谢诸位的提示,分数不多,廖表谢意。