社区
C语言
帖子详情
关于STL中内存分配的问题?
guw2000
2000-07-12 11:41:00
我在应用程序声明的一个向量(vector),该向量作为参数传入中,然后在DLL中增长该向量(分配内存),最后在应用程序中释放,会出现错误。
有一个方法可解决,但不好,即在传入参数时,先 reserve 一定的空间。
不知哪位仁兄能否有更好的方法解决该问题?
谢谢!!!
...全文
117
3
打赏
收藏
关于STL中内存分配的问题?
我在应用程序声明的一个向量(vector),该向量作为参数传入中,然后在DLL中增长该向量(分配内存),最后在应用程序中释放,会出现错误。 有一个方法可解决,但不好,即在传入参数时,先 reserve 一定的空间。 不知哪位仁兄能否有更好的方法解决该问题? 谢谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
myan
2001-03-04
打赏
举报
回复
我对于DLL不太了解,而且因为VC对于STL的支持不太完善,从你的描述来看,
我估计你的算法从STL角度来讲没有什么问题,所以我怀疑这个问题是VC与
STL的冲突问题。
不过我认为向DLL中传入STL容器类引用可能不算是很好的编程风格,也许通过
改进你的程序结构可以避免这个问题。
zhouzicn
2001-03-03
打赏
举报
回复
我想学STL,给我一些帮助,好吗!
zhouzicn@263.net
SCUM
2000-07-13
打赏
举报
回复
概念性错误,最好能看看代码。
c++
STL
容器的
内存分配
一.前言在使用
STL
各类容器的时候,有时会出现迭代器失效,引用(指针)失效等情况的而发生,即使看似你的操作都是合法的情况下。要了解
问题
的原因,我们就要了解C++
中
stl
容器的
内存分配
策略。我们才知道在哪些操作下可能导致迭代器失效,引用(指针)失效。二.
问题
分类首先我们把以上的
问题
分成两类: 容器的迭代器为什么会失效? 容器元素的引用(指针)为什么会失效? 因为从内存角度上来讲,如果引用是失效了那么指
C++:
STL
内存分配
器--allocator
**
STL
内存分配
器--allocator** 一、
STL
内存分配
器二、
STL
allocator 一、
STL
内存分配
器 分配器(allocator))是C ++标准库的一个组件, 主要用来处理所有给定容器(vector,list,map等)内存的分配和释放。C ++标准库提供了默认使用的通用分配器std::allocator,但开发者可以自定义分配器。 GNU
STL
除了提供默认分配器,还提供了__pool_alloc、__mt_alloc、array_allocator、malloc_allocat
C++学习之
STL
的
内存分配
器
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++
中
new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍
中
都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,
STL
中
的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方面的
STL
内存分配
方式
在
STL
中
考虑到小型区块所可能造成的内存碎片
问题
,SGI
STL
设计了双层级配置器,第一级配置器直接使用malloc()和free();第二级配置器则视情况采用不同的策略:当配置区块超过128bytes 时,则视之为足够大,便调用第一级配置器;当配置区块小于128bytes时,则视之为过小,为了降低额外负担,便采用复杂的内存池的方式来整理,而不再求助于第一级配置器。 每次配置器需要向系统要内存的时候,都不是按客户需求向系统申请的,而是一次性向系统要了比需求更多的内存,放在内存池里,有一个free_star.
STL
中
的
内存分配
器原理
STL
中
的
内存分配
器原理
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章