可能原因是:
1. 访问已经被释放的内存
2. 再次释放已经被释放过的内存
下例中代码执行时出现Windows has triggered a breakpoint错误,因为n被释放后还访问n的next指针。但是错误不是在该行处发生的,而是在后续程序中某处发生的。
template <class T>
struct Node
{
T data;
Node<T> *next; //此处<T>也可以省略
};
Node<T> *n = new Node<T>;
delete n;
n->next = NULL;
修改代码如下,错误消失
delete n;
n = NULL;
参考:使用Windows Debug 工具来侦测堆崩溃,http://www.cppblog.com/wangjia184/archive/2008/03/27/45520.html