2019-12-24 18:19
⁄ 工业·编程
⁄ 共 1365字
STL中的内存管理为两级配置器,一级配置器是当申请内存大于128B时候使用系统函数malloc/free进行申请释放。
二级配置器,将内存块分为大小间距为8的16个8B到128B的等长度的chunk,使用数组+链表管理。数组中存储的是大小相同的用链表链接起来的内存块。在STL中使用长度为16的数组,0处存储8Byte,然后依次16,24,36.....依次加8字节。二级配置器维护着一个内存池,如果所申请的内存块对应的数组的链表下为空,就向池中申请,如...
stl, 内存管理阅读全文
2019-12-23 18:10
⁄ 工业·编程
⁄ 共 16916字
最近在学习boost库里的一些常用的库,目前已经看到了boost库的bind适配器这块,个人感觉bind这玩意太好用了,整体来讲bind要比STL里的bind1st和bind2nd要好用很多,下面就从一些基本的用法来说起吧。
bind组件在boost中包含了很多的重载函数,其中这些函数主要是以参数的个数以及被绑定的对象类型来划分,而编译器会根据具体的参数类型以及参数个数来自动地调用相关的形式,在bind中,接收的一个参数必定是一个可调用的对象,这...
boost库阅读全文
2019-12-22 18:05
⁄ 工业·编程
⁄ 共 6597字
在上篇博文中,我们系统地学习了Boost库中智能指针的学习,在处理单个对象时,采用智能指针是一个很不错的选择,但是当需要管理的对象不止一个时,这时候智能指针就有点无能为力了,今天我们就来看看Boost库中pool库的一些东西,Boost.pool库是基于简单分隔存储思想实现的一个快速、紧凑的内存池库,不仅能够管理大量的对象,而且还可以作为stl的内存分配器,在需要大量地分配和释放小对象时,很有效率,且完全不用考虑delete,...
boost库, 内存管理阅读全文
2019-12-21 17:37
⁄ 工业·编程
⁄ 共 11671字
说起内存管理,大多数人第一反应就是new,delete等操作,这一类操作所针对的对象就是堆对象,在使用这一类操作时,一个很突出的问题就是内存泄露,这也是每个C++程序猿的挥之不去的噩梦,曾几何时因为一个不起眼的指针释放问题,而导致了服务器因内存写满而宕机,而如今这类问题,对于C++程序开发者而言已经不再是问题了,为了解决这个问题,C++程序员采用了RAII机制(资源获取即初始化),具体思想就是:在对象初始化时分配资...
boost库, 内存管理阅读全文
2019-12-20 17:28
⁄ 工业·编程
⁄ 共 710字
boost主要是通过六种智能指针来管理内存的:scoped_ptr scoped_array shared_ptr shared_array weak_ptr intrusive_ptr。他们都是轻量级的对象,速度与原始指针相差无几,对于所指的类型T也仅有一个很小且很合理的要求:类型T的析构函数不能抛出异常。
scoped_ptr:仅仅提供了*和->操作,且赋值操作符和拷贝构造函数被定义为私有的,有效的防止了指针所有权的转让。 ==和!=操作符被私有化,拒绝比较操作。
scoped_array:包装...
boost库, 内存管理阅读全文
2019-12-20 13:16
⁄ 科技·视野
⁄ 共 4967字
光阴似箭,年近岁除。眨眼间2019年也即将离我们而去。
纵观今年安防行业新技术变革,我们会发现今年安防行业涌现出新概念远不如2017年来的井喷,却愈发成熟踏实。
如果说2017年的安防是刚得到了AI这个玩具而雀跃不已的孩子,2019年的安防则更像是一个成熟的商人,每一个新技术、概念的提出和运用都直指落地。
毕竟,安防行业终究是一个前辈们靠着踏实工作一点点“熬”出来的行业,纵然涌入了许多新锐力量,但这份踏实的本心,我们...
安防行业阅读全文
2019-12-19 17:23
⁄ 工业·编程
⁄ 共 3486字
1. RAII机制
为了管理内存等资源,C++程序员通常采用RAII机制(资源获取即初始化,Resource Acquisition Is Initialization),在使用资源的类的构造函数中申请资源,然后使用,最后在析构函数中释放资源。
1)在栈上创建对象(局部对象):RAII机制正常工作,当离开作用域时,对象会自动销毁从而调用析构函数释放资源
2)在堆上创建对象,使用new操作符,那么它的析构函数不会自动调用,只有对应的delete操作符销毁它才能释放...
boost库, 内存管理阅读全文
2019-12-18 17:12
⁄ 工业·编程
⁄ 共 481字
1 简要介绍
Boost的内存管理库,包含两部分内容,分别是smart_ptr库和pool库,其中我们熟知的shared_ptr、unique_ptr、weak_ptr早已在2011年引入C++11标准。
1)smart_ptr库包含scoped_ptr、unique_ptr、shared_ptr、weak_ptr、intrusive_ptr
2)pool库包含pool、object_pool、singleton_pool
smart_ptr库有什么作用?
1)里面包含我们熟知的shared_ptr、unique_ptr、weak_ptr
2)scoped_ptr和unique_ptr功能类似,但是它更精小...
boost库, 内存管理阅读全文
2019-12-17 10:14
⁄ 工业·编程
⁄ 共 11395字
一、前言
就目前来讲,我在c/c++开发时使用过cJSON和json-c两种库,各有优劣,但是就使用简单程度来讲,我更倾向于cJSON,最近项目又用到cJSON了,正好简单总结一下,防止长时间不用又完全没有印象了,json-c等下次哪个项目使用的时候再去总结。
二、下载及编译
1、下载
这个是github的源码地址:
https://github.com/DaveGamble/cJSON
我们可以直接clone:
git clone https://github.com/DaveGamble/cJSON.git
以下内容基本是...
cJSON, JSON阅读全文
2019-12-16 09:59
⁄ 工业·编程
⁄ 共 3618字
一 libev简介
libev是一个轻量级的事件通知库,具备支持多种事件通知能力,通过对libev的源码的阅读,可以清楚了解事件通知实现内部机制。
二 核心数据结构
在libev中关键的数据结构是,loop结构体,该结构体定义的字段较多,但是主要核心的可以分为两大类
ev_loop结构体(loop为ev_loop结构的全局变量)的字段定义在ev_vars.h头文件中,然后在ev.c中通过include的方式导入
1.各类事件的watcher集合
loop中有支持很多类...
libev阅读全文