Skip to content

第二次作业 #79

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

Bigwind110
Copy link

可能产生循环引用导致内存泄漏

这个构造函数有什么可以改进的?
使用初始化列表构造 减少一次拷贝 并把prev内存清空,避免空悬指针

// 应输出多少次?为什么少了?
shared_ptr会导致循环引用,因此List被解析以后,Node不会被释放。

// 为什么删除拷贝赋值函数也不出错?
因为定义了移动赋值函数,编译器在无拷贝赋值的情况下会尝试移动赋值

void print(List const &lst) { // 有什么值得改进的?
//改为传const引用,因为打印不涉及到对象的控制权,也无需修改对象属性

 可能产生循环引用导致内存泄漏

这个构造函数有什么可以改进的?
    使用初始化列表构造 减少一次拷贝 并把prev内存清空,避免空悬指针

// 应输出多少次?为什么少了?
 shared_ptr会导致循环引用,因此List被解析以后,Node不会被释放。

// 为什么删除拷贝赋值函数也不出错?
 因为定义了移动赋值函数,编译器在无拷贝赋值的情况下会尝试移动赋值

void print(List const &lst) {  // 有什么值得改进的?
    //改为传const引用,因为打印不涉及到对象的控制权,也无需修改对象属性
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant