自定义一个栈类,使用一个栈对象初始化另一个对象,自然会用到拷贝构造函数,代码如下

File /home/Alvin/git_projects/octopress/source/downloads/code/copy_constructor.cpp could not be found 以上代码在执行的时候会出现:

1
*** glibc detected *** ./a.out: double free or corruption (fasttop)

也就是说,我们释放了两次动态分配的空间。为了解决这个问题,我们需要重写拷贝构造函数,在拷贝构造函数中重写申请新对象的动态空间。

1
Stack(const Stack &t):mem(new T[t.max]), len(t.len), max(t.max){}

Comments