社区
C++ 语言
帖子详情
vector:堆和栈
xombat
2006-04-25 04:32:39
对于vector,变量是放在了堆中还是放在了栈中?还是两种情况都有。本人认为:由于sizeof(vector)=16 (vc++ 7.0中)所以,这16 byte数据是被放在了stack中,而vector中我们存放的内容,可能远大于16,被存放在了栈中。
另外:我们能不能像使用堆中的内存空间一样使用栈中的内存,也就是能不能动态分配栈free空间?
分少了点,等有了分再加吧。
...全文
1938
13
打赏
收藏
vector:堆和栈
对于vector,变量是放在了堆中还是放在了栈中?还是两种情况都有。本人认为:由于sizeof(vector)=16 (vc++ 7.0中)所以,这16 byte数据是被放在了stack中,而vector中我们存放的内容,可能远大于16,被存放在了栈中。 另外:我们能不能像使用堆中的内存空间一样使用栈中的内存,也就是能不能动态分配栈free空间? 分少了点,等有了分再加吧。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
塘外人
2006-05-09
打赏
举报
回复
楼上的,这里说的vector在哪分配是指 它后面的数组放在哪儿!不知道你有没有看过vector的源码? vector类的成员其实是个指针,通过指针来分配动态数组,
不好意思,今天才看到这些话
我想指出其中的错误:
vector类的成员其实是指针,我想意思是说vector中的元素是指针吧?
那么请问vector<int> 与 vector<int*>的区别是什么?难道前者存放的也是指针,儿后者则是指针的指针?
scutcs
2006-04-26
打赏
举报
回复
没事没事,高手也有粗心的时候,不用这么多面子问题吧? 俺们菜鸟看来也有优势的时候,就是说话不避讳, 有问马上提,哈哈
adintr
2006-04-26
打赏
举报
回复
当然不能了,你把你前面的编辑了,
别人看到后面的回复就不知所云了呵
healer_kx
2006-04-26
打赏
举报
回复
再问一句,以前发的帖子可以编辑嘛?
汗。。。
healer_kx
2006-04-26
打赏
举报
回复
... ...
push_back(T())
比较。。。头大~
这个也是在堆中分配了。。。一般是拷贝构造到堆上的。
wengerbin
2006-04-26
打赏
举报
回复
haha ~~~
Wolf0403
2006-04-25
打赏
举报
回复
寒一下甘草。。。最近饼子们怎么都。。。
>> 我们能不能像使用堆中的内存空间一样使用栈中的内存,也就是能不能动态分配栈free空间?
GNU Glibc 提供了 alloca 函数分配栈空间,但是要求是在 GNU Gcc toolchain 环境下才能使用(binutils, ld 等),不具有可移植性。
dukang_2005
2006-04-25
打赏
举报
回复
楼上的,这里说的vector在哪分配是指 它后面的数组放在哪儿!不知道你有没有看过vector的源码? vector类的成员其实是个指针,通过指针来分配动态数组,vector的指针成员当然是栈区了,我们声明变量无外乎这几种全局变量,静态变量,局部变量! 全局变量,静态变量都是在静态全局区分配的,剩下的就是函数里的局部变量了,局部变量是全部都在栈区的,动态怎么可能有我们声明的变量!
塘外人
2006-04-25
打赏
举报
回复
1
楼上的说,栈是用来函数调用时分给局部变量的,又说vector是在堆中分配的
真是自相矛盾啊,
这里的vector对象本身就是局部变量啊
所以是在栈中分配的
另外, 谨记:vector对象中存放的是原始对象的副本
如: string s("Hello");
vector<string> sv;
sv.push_back(s);
则,sv中放了s的副本,此时,sv 和 s 这两个对象都在栈中(假设它们都是某函数的局部变量)
dukang_2005
2006-04-25
打赏
举报
回复
vector是在堆中分配的,栈是用来函数调用时分给局部变量的,嵌套的越深栈用的越多!
函数退出的时候就自动退栈了(通过ebp寄存器的加减),不用你去管理的!
栈中的内存是不会动态分配给你的!
假设能分配的话,某个指针指向栈区,如果我后面有函数调用,那么调用函数肯定得用栈,就会把你的值冲掉,
adintr
2006-04-25
打赏
举报
回复
vector 中存储的内容默认是在堆中分配的,你可以指定自己的空间配置器来改变这种行为。
栈的空间也是可以动态分配的,但不是 C++ 的标准,VC 做了扩展后可以的。
C99 的可变数组就是动态在栈中分配空间的。
adintr
2006-04-25
打赏
举报
回复
寒楼上一个,
vector<T> 却 push_back(T*)
healer_kx
2006-04-25
打赏
举报
回复
function():
vector<T> a;
a.push_back(new T());
a在栈上,
T元素在堆上。
TypeScript类型系统与全
栈
项目资源包
本资源包整理了TypeScript类型系统设计检查清单、前后端接口契约模板、全
栈
项目目录结构、tsconfig配置基线、CI质量门禁、JavaScript迁移到TypeScript计划和常见问题排查指南,适合前端开发、Node.js后端开发、全
栈
工程化学习和团队代码质量建设参考。内容为原创模板,不包含真实生产密钥、账号、内部仓库地址或敏感配置,可按项目实际技术
栈
调整。
轻量级物联网开源平台,6分钟快速部署,千万级设备承载、电信级稳定性 物模型-规则引擎-数据通道-组态页面全流程低代码开发、前后端完全开源、支持多行业工业协议
DGIOT是国内首款轻量级开源工业物联网平台,我们致力于提供五类物联网解决方案:国企/研究院:平台代码开源,无版权产权困扰,国产无“卡脖”之忧;系统集成商:通用设备海量接入、定制设备二次开发、6分钟一键式私有化快速部署,低成本(降90%成本);工业设备制造商:海量设备上线运维,不受公有云限制,低成本,短周期自建平台,私有化部署,数据安全;开源平台开发者:一键式开发环境,集成和兼容各种最优开源工具,快速承接物联网项目;垂直领域物联网平台:快速部署私有化平台,千万级承载,运营级底座,全开放扩展
单相逆变器闭环逆变电路PWM模型仿真研究(Simulink仿真实现)
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。
群内分享图纸缺字报错,综合字体库从容应对.rar
做 CAD 的小伙伴注意啦!打开图纸文字乱码、缺字、全是问号?别慌,我整理了全套解决办法,大部分这类问题都能一次性修好,欢迎下载!
基于net8/10的跨平台高性能开源的工业物联网(IIoT)边缘计算网关 专注于工业现场设备数据的高效采集、边缘处理与可靠转发 项目面向真实工业场景设计,强调 稳定性、高性能、可扩展性与工程可维护性
一个开源的工业物联网(IIoT)边缘计算网关,专注于工业现场设备数据的高效采集、边缘处理与可靠转发。项目面向真实工业场景设计,强调 稳定性、高性能、可扩展性与工程可维护性,适用于工业自动化、能源、电力、制造、楼宇等多种应用环境。ThingsGateway 采用模块化与插件化架构,支持多种工业通信协议,可在边缘侧完成数据采集、预处理、协议转换与转发,有效降低系统耦合度与云端压力,是构建工业物联网系统的基础设施组件。
C++ 语言
65,211
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章