那是因为VC在分配空指针的时候并不是null,而是有一个值的(好象是0xcdcdcdcd)。
如果你在构造函数中将其初始化为NULL,就不会有问题。
CMyClass::CMyClass()
{
pNodList = NULL;
pBondList= NULL;
}
如果你在构造函数中将其初始化为NULL,就不会有问题。
CMyClass::CMyClass()
{
pNodList = NULL;
pBondList= NULL;
}
那两个 [] 没必要,这样就成了释放N维数组了。
延着链表一个一个 delete 了,用 delete[] 是删除这样的内存:
p = new char[20][20]; 用 delete是删除一块一次分配的内存,链表的内存不是一次
分配的。
NODE中定义了成员 short x, 调用sscanf(strbuf, "...%d...", &x)向其中写值(向
pNodeList链表中传值),结果向链表中的上一个元素写值时总是把下一个元素的某些值
覆盖,这样在写最后一个值的时候发生了越界(其实在前面就越界了).改成sscanf(...,
"...%hd...", &x)后错误消除。原来是short对应着%hd,看来基本功太糟了。不过我
仍感到很意外,很滑稽。
另外多谢诸位的提示,分数不多,廖表谢意。