社区
C++ 语言
帖子详情
C++ 中标准库的内存是在堆中,还是在栈中分配?
wangcgfan
2010-09-25 10:56:02
C++ 标准库中自带的std::string类中字符数量是可以动态变化的,想问一个问题,string类内部存储字符串的内存 是在堆中还是在栈中分配的?有人了解吗?
...全文
818
12
打赏
收藏
C++ 中标准库的内存是在堆中,还是在栈中分配?
C++ 标准库中自带的std::string类中字符数量是可以动态变化的,想问一个问题,string类内部存储字符串的内存 是在堆中还是在栈中分配的?有人了解吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
鸵鸟
2010-10-01
打赏
举报
回复
STL容器如果定义为局部变量, 栈上一般三个指针begin, end & ?, resize之后sizeof (container)不变
元素分配在堆
qq120848369
2010-10-01
打赏
举报
回复
string里边就是一个指针char *,指针指向了一段内存,内存里放的就是字符串.
冻结
2010-09-25
打赏
举报
回复
能改变大小的容器都是在堆上。
栈上改变大小,没人会这么做吧。
冻结
2010-09-25
打赏
举报
回复
栈上一部分不变的。
堆上一部分可变的。
job82824
2010-09-25
打赏
举报
回复
[Quote=引用 3 楼 wangcgfan 的回复:]
从性能上讲,是堆上的性能好还是栈的性能好?
[/Quote]
性能上将,无论堆上的还是栈上的都好。性能的好坏是你的算法决定的,不是变量的性质决定。
动态变量有动态的好处--可伸缩;
静态变量有静态的好处--自动初始化;
没有绝对的好坏的。
Defonds
2010-09-25
打赏
举报
回复
是在堆上
wangcgfan
2010-09-25
打赏
举报
回复
从性能上讲,是堆上的性能好还是栈的性能好?
pengzhixi
2010-09-25
打赏
举报
回复
假设string使用一个指针实现的,那么这个指针本身是分配在栈上,但是指针指向的内存是堆上。
xingzhe2001
2010-09-25
打赏
举报
回复
string是堆上
辰岡墨竹
2010-09-25
打赏
举报
回复
STL自带的分配器无论是通过malloc还是new实现的,在Windows下都是直接调用HeapAlloc/HeapFree等堆类型API。一般STL来存放的数据都是频繁变化,且比较小的(不大于1MB),堆上足够用了。
luoqi
2010-09-25
打赏
举报
回复
stl模板自带内存分配器alloctor
不过,在使用时,你可以传入自己的内存管理器
alloctor一般有两种处理方法(PJL版,STL有很多版本)
1,POD类型,自己malloc
2,obj类型,调用obj的construct(一般是new placement)
而new placement一般使用编译器的new
你可以在<new.h>中找到,也可以实现自己的new替换
Sjdiao
2010-09-25
打赏
举报
回复
std::string 声明的变量 假如符值范围在0-15,那么他是栈分配的。如果长度超过了16那么就是在对上分的内存,debug一下就知道了。
C++ 语言
65,212
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章