文章分类 -  CPP STL

摘要:回页首Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:图 1 Valgrind 体系结构Valgrind包括如下一些工具:Memcheck。这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用 阅读全文
posted @ 2013-09-09 17:45 tangr206 阅读(190) 评论(0) 推荐(0)
摘要:c++类继承内存布局的分类:vcc++2011-11-07 08:141544人阅读评论(2)收藏举报c++structdelete编译器cmanager今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小 阅读全文
posted @ 2013-09-06 13:42 tangr206 阅读(521) 评论(0) 推荐(0)
摘要:分类:C++学习2012-02-23 09:48750人阅读评论(1)收藏举报存储memcached算法allocation数据结构工作内存碎片的产生:内存分配有静态分配和动态分配两种静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。 因此动态分配将不可避免会产生内存碎片的问题,那么什么是内存碎片?内存碎片即“碎片的内存”描述一个系统中所有不可用的空闲内存,这些碎片之所以不能被使用,是因为负责动态分配内存的分配算法使得这些空闲的内存无法使用,这一问题的发生,原因在于这些空闲内存以小且不连续方式出现 阅读全文
posted @ 2013-06-09 18:38 tangr206 阅读(324) 评论(0) 推荐(0)
摘要:hash_map分析2人收藏此文章,我要收藏发表于1年前(2011-09-20 17:40) , 已有1267次阅读 ,共0个评论最近一直在使用hash_map,找时间来梳理一下(转)详细解说hash_map几句话道出map和hash_map的区别1. STL map is an associative array where keys are stored in sorted order using balanced trees. While hash_map is a hashed associated container, where keys are not stored in an 阅读全文
posted @ 2013-06-03 13:20 tangr206 阅读(174) 评论(0) 推荐(0)
摘要:本文介绍malloc和free函数的内容。 在C中,对内存的管理是相当重要。下面开始介绍这两个函数: 一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte):该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。2、函数的用法:其实这两个函数用起来... 阅读全文
posted @ 2013-05-27 20:59 tangr206 阅读(210) 评论(0) 推荐(0)
摘要:Linux中文手册Linux官方手册中文翻译定期与Linux官方手册同步翻译欢迎所有同仁参与翻译:易美翻译开头字母A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z标题摘要a64la64l, l64a - 在 long (长整形)与 base-64 之间进行相互转换abort强行终止一个进程,以一个非常粗野的方式来完成这个工作。abortabort - 异常终止进程absabs, labs, llabs, imaxabs - 计算一个整数的绝对值acceptaccept - 通过套接口接受一个连接accessaccess - 对一个文件检测当 阅读全文
posted @ 2013-05-25 18:06 tangr206 阅读(719) 评论(0) 推荐(0)
摘要:分类:C语言2009-04-30 23:2684346人阅读评论(145)收藏举报数据结构编译器windowsbyte存储扩展一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一 阅读全文
posted @ 2013-05-23 10:42 tangr206 阅读(146) 评论(0) 推荐(0)
摘要:hash_map分析 0人收藏此文章, 我要收藏 发表于5个月前 , 已有213次阅读 共0个评论最近一直在使用hash_map,找时间来梳理一下(转)详细解说hash_map几句话道出map和hash_map的区别1. STL map is an associative array where keys are stored in sorted order using balanced trees. While hash_map is a hashed associated container, where keys are not stored in an ordered way. ... 阅读全文
posted @ 2012-03-12 14:12 tangr206 阅读(335) 评论(0) 推荐(0)
摘要:原文地址:http://blog.csdn.net/gongxinheng/archive/2010/03/27/5421914.aspxby: HengStar2010/3/27我是一名游戏开发程序员,研究C++ Boost库已经有一小段时日了,学的越多愈发愈感觉出它的强大,每次学习后在实战项目中高效地使用,都让我兴奋不已,为了让自己记忆更深刻,同时也希望 越来越多的同行们能快速高质量地解决实际项目中遇到的各种问题,在此将我将自己实战中实用boost的经验分享给大家,本人才疏学浅,如果有什么问题希望 读者们能帮助指出,大家共同探讨^_^本章介绍的主题是multi_index_containe 阅读全文
posted @ 2012-02-08 18:21 tangr206 阅读(822) 评论(0) 推荐(0)
摘要:Boost.Circular_buffer维护了一块连续内存块作为缓存区,当缓存区内的数据存满时,继续存入数据就覆盖掉旧的数据。 它是一个与STL兼容的容器,类似于 std::list或std::deque,并且支持随机存取。circular_buffer 被特别设计为提供固定容量的存储大小。当其容量被用完时,新插入的元素会覆盖缓冲区头部或尾部(取决于使用何种插入操作)的元素。逻辑存储结构如图boost::circular_buffer is on the way…很多时候我们会用到缓冲区或者类似缓冲区的数据结构,如果能 事先估计出数据量多大,并尽可能的节约内存,可以使用环形(逻辑上)结构的缓 阅读全文
posted @ 2011-12-06 11:09 tangr206 阅读(859) 评论(0) 推荐(0)
摘要:Pool分配是一种分配内存方法,用于快速分配同样大小的内存块, 尤其是反复分配/释放同样大小的内存块的情况。1. pool 快速分配小块内存,如果pool无法提供小块内存给用户,返回0。 Example:voidfunc(){boost::pool<>p(sizeof(int));^^^^^^^^^^^指定每次分配的块的大小for(inti=0;i<10000;++i){int*constt=p.malloc();pool分配指定大小的内存块;需要的时候,pool会向系统申请大块内存。...//Dosomethingwitht;don'ttakethetimetofr 阅读全文
posted @ 2011-12-05 20:26 tangr206 阅读(249) 评论(0) 推荐(0)
摘要:在大型web应用中,缓存可算是当今的一个标准开发配置了。在大规模的缓存应用中,应运而生了分布式缓存系统。分布式缓存系统的基本原理,大家也有所耳 闻。key-value如何均匀的分散到集群中?说到此,最常规的方式莫过于hash取模的方式。比如集群中可用机器适量为N,那么key值为K的的数据 请求很简单的应该路由到hash(K) mod N对应的机器。的确,这种结构是简单的,也是实用的。但是在一些高速发展的web系统中,这样的解决方案仍有些缺陷。随着系统访问压力的增长,缓存系统不 得不通过增加机器节点的方式提高集群的相应速度和数据承载量。增加机器意味着按照hash取模的方式,在增加机器节点的这一. 阅读全文
posted @ 2011-12-05 18:15 tangr206 阅读(263) 评论(0) 推荐(0)