C/C++
文章平均质量分 81
bolike
这个作者很懒,什么都没留下…
展开
-
C++中继承情况下的类作用域
首先,每一个类都保持着自己的作用域,在该作用域中定义了成员的名字。 名字查找在编译时发生 对象、引用或指针的静态类型决定了对象能够完成的行为(C++ PRIMER)。这里能够完成的行为,应该说是能够使用的变量名(数据和方法),这些变量名是定义在调用它的对象、引用或指针的静态类型中的。为什么将行为改为变量名,是因为我觉得行为是处理事件的方法,而在静态类型和动原创 2012-05-19 17:49:53 · 874 阅读 · 0 评论 -
有了互斥量,为什么还需要条件变量?
一。互斥量和条件变量简介 互斥量(mutex)从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥锁加锁的线程将会阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为运行状态的线程可以对互斥锁加锁,其他线程将会看到互斥锁依然被锁住,只能回原创 2013-06-04 21:39:26 · 7503 阅读 · 12 评论 -
《STL源码剖析》—— 空间配置器(五)
一、内存基本处理工具 STL定义有五个全局函数,作用于未初始化空间上。前两个函数是用于构造的 construct() 和用于析构的 destroy(),另三个函数 uninitialized_copy(),uninitialized_fill(),uninitialized_fill_n(),分别对应于高层次函数 copy()、fill()、fill_n() —— 这些都是STL原创 2014-02-20 20:51:12 · 1432 阅读 · 0 评论 -
《STL源码剖析》——迭代器(iterators)概念与traits编程技法(一)
一、迭代器设计思维——STL关键所在 STL的中心思想在于:将数据容器(containers)和算法(algorithms)分开,彼此独立设计,最后再以一帖粘合剂将它们撮合在一起。二、迭代器(iterator)是一种 smart pointer 迭代器是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便是内容提领(dereference)和成员访问原创 2014-02-25 21:47:18 · 1119 阅读 · 0 评论 -
《STL源码剖析》——迭代器(iterators)概念与traits编程技法(二)
一、SGI STL 的私房菜:__type_traits __type_traits 负责萃取型别(type)的特性。此处所关注的型别特性是指:这个型别是否具备 non-trivial defalt ctor?是否具备 non-trivial copy ctor?是否具备 non-trivial assignment operator?是否具备 non-trivial dtor?原创 2014-02-25 22:53:37 · 1512 阅读 · 0 评论 -
《STL剖析》——空间配置器(一)
SGI STL 的配置器与众不同,也与标准规范不同,其名称是 alloc 而非 allocator ,而且不接受任何参数。一、SGI标准的空间配置器,std::allocator 虽然 SGI 也定义有一个符合部分标准、名为 allocator 的配置器,但 SGI 从未用过它,也不建议我们使用。主要原因是效率不佳,只把 C++ 的 ::operator new 和 ::op原创 2014-02-18 20:59:52 · 965 阅读 · 0 评论 -
《STL源码剖析》—— 空间配置器(二)
一。构造和析构基本工具:construct() 和 destroy()#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H#define __SGI_STL_INTERNAL_CONSTRUCT_H// 欲使用 placement new,需先包含此文件#include __STL_BEGIN_NAMESPACE// 以下是 destroy() 第一版本原创 2014-02-18 21:31:00 · 1216 阅读 · 0 评论 -
《STL源码剖析》—— 空间配置器(四)
一、第二级配置器 __default_alloc_template 剖析 为了方便管理,SGI第二级配置器会主动将任何小额区块的内存需求量上调至 8 的倍数,并维护 16 个free-lists,各自管理大小分别为 8, 16, 24, 32, 40, 48, 56,64, 72,80,88,96,104,112,120,128 bytes的小额区块。free-lists的节点结原创 2014-02-20 05:05:55 · 1278 阅读 · 0 评论 -
《STL源码剖析》—— 空间配置器(三)
一、空间的配置与释放,std::alloc 对象构造前的空间配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下: 1. 向 system heap 要求空间。 2. 考虑多线程(multi-threads)状态。 3. 考虑内存不足时的应变措施。 4. 考虑过多“小型区块”可能造成的内存碎片(fra原创 2014-02-19 22:11:35 · 1246 阅读 · 0 评论