最简单的智能指针就是将指针封装在类里,同时将该类的复制与赋值禁用,也就是使该类失去值语义。实现代码如下: 1 #ifndef SMART_PTR_H 2 #define SMART_PTR_H 3 #include 4 5 6 template 7 class SmartPtr 8 { 9 ...
分类:
编程语言 时间:
2014-10-09 01:07:37
阅读次数:
327
我们不止一次写过这种代码: { mutex_.lock(); //XXX if(....) return; //XXX mutex_.unlock();
} 显然,这段代码中我们忘记了解锁。那么如何防止这种情况,我们采用和智能指针相同的策略,把加锁和解锁的过程封装在一个对象中。 实现“对象生命期”等...
分类:
系统相关 时间:
2014-10-07 21:53:24
阅读次数:
215
有array(数组)、smartptr(智能指针)、stack(栈);一、array:1、我们实现了指针访问和下标访问。C++中指针访问常用迭代器来代替。2、这里我们也揭示了 size_type、iterator、[] 、begin()、end()、size()的真实面目;Array.hpp 1 #...
分类:
编程语言 时间:
2014-10-02 02:02:52
阅读次数:
292
1.断言是将一个需要为真的表达式放在语句中,在debug模式下检查一些逻辑错误的参数,C++中使用assert需要使用或者头文件。有函数定义如下:
voidfun(int a[],int n)
{
assert(n>0);
//dosomething;
}
这样就可以检查n的情况,如果遇到这种情况,程序会调用abort()函数而终止。
C++11提供了static_assert断言,...
分类:
编程语言 时间:
2014-10-02 01:46:02
阅读次数:
258
weak_ptr是辅助shared_ptr的智能指针。就像它的名字一样,是个“弱”指针;仅有几个接口,仅能完成很少工作,来辅助shared_ptr...
分类:
其他好文 时间:
2014-09-29 22:38:41
阅读次数:
196
scoped_ptr是一个智能指针,包装了指向堆上内存的指针。它限制了指针的使用权,不允许转让,不支持比较操作。...
分类:
其他好文 时间:
2014-09-28 00:44:00
阅读次数:
197
scoped_array功能类似scoped_ptr,其管理new int[]类似数组的指针。...
分类:
其他好文 时间:
2014-09-28 00:42:50
阅读次数:
217
1.一个简单的单例类:
class Singleton
{
public:
static Singleton *getInstance()
{
if(pInstance_ == NULL){
mutex_.lock();
if(pInstance_ == NULL){
...
分类:
其他好文 时间:
2014-09-27 14:43:19
阅读次数:
132
在C/C++ 中常用的内存分配和管理的方式有很多,如智能指针, STL容器, new/delete, malloc/free, brk, sbrk等等,最近研究了一下Unix比较底层的一种内存管理方式mmap/munmap,需要完全自己来维护分配的虚拟内存,没有任何其他辅助的数据结构来帮助维护内存空间。
一、在终端里输入 man mmap 可以查看此函数的API文档,此函数的具体描述如下:
v...
分类:
编程语言 时间:
2014-09-27 13:55:09
阅读次数:
799