阿里云C++二面面经
- 软件开发
- 2025-08-12 20:27:03

1.智能指针
1、shared_ptr
原理:shared_ptr是基于引用计数的智能指针,用于管理动态分配的对象。无论 std::shared_ptr 存储在堆区还是栈区,它所指向的内存块始终存储在堆区。这是因为 std::shared_ptr 是用于管理动态分配的内存的智能指针,它需要存储在堆区,以便进行引用计数和自动释放内存 使用场景:适用于多个智能指针需要共享同一块内存的情况。例如在多个对象之间共享某个资源。2、 unique_ptr
原理:unique_ptr是独占式智能指针,意味着他独占拥有所管理的对象,当其生命周期结束时,对象会自动销毁。 使用场景:适用于不需要多个指针共享同一内存的情况,即单一所有权。通常用于动态分配的对象 或文件句柄。3、weak_ptr
原理:weak_ptr是一种弱指针,他不增加引用计数。它通常用于协助shared_ptr,以避免循环引用问题。 使用场景:适用于协助解决shared_ptr的循环引用问题,其中多个shared_ptr互相引用,会导致内存泄漏。4、auto_ptr (已废弃)
原理:std::auto_ptr是C++98标准引入的智能指针,用于独占地管理对象。但由于其存在潜在的问题,已在C++11中被废弃。 使用场景:在C++98标准中,可用于独占性地管理动态分配的对象。不推荐在现代C++中使用。 2.栈和堆的区别1、
阿里云C++二面面经由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“阿里云C++二面面经”