当前位置:首页 » 操作系统 » linuxstl

linuxstl

发布时间: 2022-05-26 11:52:10

1. linux c++ stl的内存如何才会释放

首先回linxxx3童鞋的:
根据map的代码片段,可以看见重载下标运算符如下:
template<class Key,class T,class Compare=less<Key>,class Alloc = alloc>
{
....省略
T& operator[](const Key_type& k){
return (*((insert(value_type(k,T() ) ) ) .first)).second;
}
....省略
}
由以上代码可知.下标运算符中间接调用insert.
即使事先不存在的pair也会被新插入再取出value来.
童鞋,该补课了.

再回答楼主问题:
stl的内存实质上都是由allocator来负责管理的.
alloctor会管理一个内存池.按照标准而言.这个内存池会在stl实例被析构的时候将内存池销毁并还给系统调用库.
注意:是还给系统调用库.没有说还给系统了.
此时,这段被归还的内存是可以用于存放其它东西的.
只是他们还没有被还给系统.
如何"强迫他"还给系统呢?
这个问题要问这个系统库,一般而言.当有新的内存请求,而系统觉得内存太少的时候.他就问去检查下看有谁把内存还回来了.如果有,就把它们取回空闲内存区.
这就是为什么你随便new个什么内存立即 就回到系统的原因.
这个问题要深究可以去查阅linux内核编程相关的东西.

2. linux stl 头文件 安装哪个包

Linux上C++的STL头文件好像属于是GNU编译器带的头文件,应该是安装了GNU C/C++编译器就会有,我的系统上用yum安装了gcc-c++这个g++编译器的软件包后,然后就系统上就有C++的各种头文件了。GNU C++的的头文件目录一般是/usr/include/c++这个目录,你看看你的系统上有没有这个目录。

3. linux g++ 的stl是线程安全的么

STL的线程安全问题不能一概而论,从标准上说,STL从来没说过自己是线程安全的,同时为了性能,很多地方也无法实现线程安全(要完美实现线程安全必须产生大量的临界锁定,会大大影响性能),所以首先你应该认为stl不是线程安全的,并且尽量依靠自己来做线程同步安全机制。
但STL在一定程度上可以看做是线程安全
1:多线程读是安全的,多线程写是不安全的
2:不同容器的多线程读写是没问题的,同一个容器不能多线程写
3:返回迭代器的时候,迭代器的生命周期内一定要自己做安全同步

4. linux下STL得string类实现源码怎么找

linux下不是所有的程序都有源代码,能再具体描述你的问题吗? 脚本类的软件有源代码,编译类的,类似c语言的一般经过编译连接,发布的不带源代码。

5. linux stl容器可以提示吗

(1)序列式容器(Sequence containers),每个元素都有固定位置--取决于插入时机和地点,和元素值无关,vector、deque、list;
Vectors:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时;
Deques:是“double-ended queue”的缩写,可以随机存取元素(用索引直接存取),数组头部和尾部添加或移除元素都非常快速。但是在中部或头部安插元素比较费时;
Lists:双向链表,不提供随机存取(按顺序走到需存取的元素,O(n)),在任何位置上执行插入或删除动作都非常迅速,内部只需调整一下指针;
(2)关联式容器(Associated containers),元素位置取决于特定的排序准则,和插入顺序无关,set、multiset、map、multimap;
Sets/Multisets:内部的元素依据其值自动排序,Set内的相同数值的元素只能出现一次,Multisets内可包含多个数值相同的元素,内部由二叉树实现,便于查找;
Maps/Multimaps:Map的元素是成对的键值/实值,内部的元素依据其值自动排序,Map内的相同数值的元素只能出现一次,Multimaps内可包含多个数值相同的元素,内部由二叉树实现,便于查找;

6. linux 下如何查看stl的源代码

下面首先给出这几篇文章,都是介绍STL入门的极佳导学文章-- C++ STL轻松导学STL简介A modest STL tutorial 看了这篇文章之后,我想你一定对STL有了一个概括性质的了解,当然,如果你感觉自己了解的仍然不够充分,你可以去这里--STL 中文站最优秀的STL使用学习网站 C++ Standard Template Library Overview 获取更为详细的信息;其实网上有关STL的东西太多了,鱼龙混杂,但绝不乏精品,所以,如果你感觉看某一篇有关STL的文章实在是看不下去了,就应该考虑是不是这篇文章质量有问题,再去网上搜取合适的吧。 我想通览了以上有关STL的信息之后,我们可以得出这样一个结论,那就是在linux下,如果要使用STL库,可选的就是这两个:Boost和SGI; 下面我们分别来作一下比较: 这是C++ Boost 库的文档索引 这是C++ SGI 库的文档索引 经过比较,我们可以得出这样一个结论,Boost库的内容更为丰富一些;所以,如果你打算体验一下Linux下的基于STL的应用开发,可以准备从Boost的学习开始,而且Boost的网上文档也是非常丰富的,参与Boost的开发人员甚至达到了2000多人! 下面在Linux下编写一个基于STL的程序,测试一下;对了,现在我们也知道了Linux下默认支持的STL是SGI库,此库在Linux下性能非常不错! 这里先给出程序源代码:

7. linux 下想实现stl的内存共享,有人有相关的可参考实例吗

此种问题应该是linux中进程间的通信技术,你可以使用linux系统提供的API函数 mmap函数,映射一片指定大小的内存空间,护着使用共享队列,另外不同的进程的同一个虚拟地址指向的实际内存空间是不同的;各自独享单独的进程空间;
可参考linux C一站式编程

热点内容
安卓自动脚本怎么写 发布:2024-10-27 13:25:46 浏览:22
java论坛项目 发布:2024-10-27 13:25:31 浏览:590
cochrane数据库 发布:2024-10-27 13:19:39 浏览:807
WCL算法 发布:2024-10-27 13:13:29 浏览:293
解压手写板怎么做 发布:2024-10-27 13:06:25 浏览:927
pythonetree 发布:2024-10-27 12:48:32 浏览:195
cmd非默认端口ftp 发布:2024-10-27 12:41:56 浏览:121
android无线网卡 发布:2024-10-27 12:36:07 浏览:772
零基础c语言入门 发布:2024-10-27 12:20:45 浏览:689
相机在哪里设置密码 发布:2024-10-27 12:20:44 浏览:371