C++、析构函数、删除动态空间

发布网友 发布时间:2022-03-26 04:05

我来回答

4个回答

热心网友 时间:2022-03-26 05:35

我看析构代码没有问题!不知显式调用析构有何考虑,如果是对象销毁时自动调用,应该没有问题。你可以如下验证:
class matrix {

...
};
void myfun(void){
matrix(3);
}

int main (void) {
myfun();
system ("pause");
return 0;
}
这样myfun退出时自动调用~matrix,就应该没问题。

热心网友 时间:2022-03-26 06:53

去掉a.~matrix (); 这行代码,否则main()再调用一次会出错的追问如果中途需要回收空间应该怎么办?

追答

方法有两种:

单独写一个成员函数来完成内存回收,析构函数中不要写内存回收代码。但建立对象后要自己在程序中调用有回收代码的成员函数!

写一个成员函数来完成内存回收,在析构函数中也有内存回收代码,但为了在析构函数中的回收代码和你写的那个函数代码不出现重复回收,最好在类中设置一个数据成员作为回收标志!

热心网友 时间:2022-03-26 08:27

谁让你显式调用析构函数的?对内存分配不熟悉的情况不要调用析构函数

热心网友 时间:2022-03-26 10:19

int main (void) {
matrix a (3);
a.~matrix (); // 谁叫你在这里调用西沟函数的?
system ("pause");
return 0;
}

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com