You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

unique_ptr<char*>智能指针的智能性及内存回收问题解析

问题

函数f分配若干字节并以unique_ptr<char*>形式返回,该智能指针的“智能”程度如何?当返回的unique_ptr超出作用域时,这些分配的字节会归还给系统吗?

关键提示:此处被管理的对象是指针(char*),而非它指向的字节!(因此需要数组特化)

答案

不会。

unique_ptr<char*>的管理对象是char*类型的指针本身,而非该指针指向的堆内存字节。当这个智能指针超出作用域时,它只会销毁自己持有的那个指针变量,不会去释放指针指向的堆内存,导致分配的字节无法归还给系统,造成内存泄漏。

正确的做法是使用unique_ptr<char[]>——这是unique_ptr针对数组场景的特化版本,它会在自身销毁时自动调用delete[]来释放指向的数组内存,从而正确归还分配的字节给系统。


内容的提问来源于stack exchange,提问作者ExpertNoob1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:20:24