析构函数的疑问
1. 我在list_t和node_t的类里面都在各自的析构函数里面printf信息,为什么程序运行的时候没有语句显示出来,难道没有调用我自己写的析构?
2. 如果我增加了
23 node = new node_t(100);
24 l->list_insert(node, 2);
程序就显示内存出错,提示两次释放空间;
但去掉 27 l->~list_t();后,程序又正常,就是没有析构的信息打印出来,请问是什么原因?
int main(void)
10 {
11 int i, n;
12 node_t *node;
13 srand(getpid());
14
15 list_t *l = new list_t(sizeof(int));
16 for(i = 0; i < 10; i++)
17 {
18 n = random() % 100;
19 node = new node_t(n);
20 l->list_append(node);
21 }
22 l->list_travel();
23 node = new node_t(100);
24 l->list_insert(node, 2);
25 l->list_travel();
26 //delete l;
27 l->~list_t();
28 return 1;
29 }