社区
C++ 语言
帖子详情
C++ 中标准库的内存是在堆中,还是在栈中分配?
wangcgfan
2010-09-25 10:56:02
C++ 标准库中自带的std::string类中字符数量是可以动态变化的,想问一个问题,string类内部存储字符串的内存 是在堆中还是在栈中分配的?有人了解吗?
...全文
824
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一下就知道了。
二
内存
分配
(勿在浮沙筑高台)
<!-- @page { size: 8.5in 11in; margin: 0.79in } H1 { margin-top: 0.24in; margin-bottom: 0.23in; line-height: 200%; page-break-inside: avoi...
C/
C++
动态
内存
分配
malloc、new、vector(简单讲述)
今天来主要讲
C++
中
动态
内存
分配
其
中
会穿插一些C的内容以及两者的比较如果对C语言
中
的动态
内存
分配
还不够理解的同学在讲解
C++
的动态
内存
分配
之前。
Cpp的动态存储Dynamic Memory-笔记
Cpp的Dynamic Memory动态
内存
本文参考这里
堆
&
栈
stack
栈
heap
堆
new&deletedata-type *ptr = new data-type; //
分配
delete ptr; //释放* Cpp里不用malloc/free。数组的动态
内存
分配
// 一维数组 data-type *ptr = new data-type[SIZE]; delete [] ptr;//
C++
内存
泄露
C++
内存
泄漏问题及解决方案摘要:
内存
泄漏是程序
中
未正确释放动态
分配
内存
的现象。
C++
中
内存
分配
主要有静态存储、
栈
和
堆
三种方式,其
中
堆
内存
需手动管理。程序
内存
分为
栈
、
堆
、数据段和代码段。
内存
泄漏常见原因包括构造函数/析构函数不匹配、嵌套指针未清除、数组释放错误、拷贝构造函数缺失等。野指针问题主要源于未初始化或已释放指针未置空。解决方案包括:确保
分配
释放配对、使用智能指针(shared_ptr、unique_ptr)和
标准库
容器自动管理
内存
。合理运用这些方法可以有效预防
内存
泄漏。
C++
动态
内存
在
C++
中
,动态
内存
管理是通过使用new和delete操作符来完成的。这些操作符允许你在程序运行时动态地
分配
和释放
内存
。与静态
内存
分配
(如数组)不同,动态
内存
分配
的大小可以在运行时决定,并且不需要在编译时就确定。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章