`
文章列表
//Tag仅仅是用于标记不同的单件,可以是空类,甚至是声明 //第二个参数RequestedSize等同于pool构造函数中的整数requested_size,指示分配内存块的大小 template<typename Tag,unsigned RequestedSize> class singleton_pool { public: static bool is_from(void * ptr); static void * malloc(); static void * ordered_malloc(); static void ...
//模板类型参数ElementType指定了要分配的元素类型,该实例不能再用于分配其它类型的对象 template<typename ElementType> class object_pool:protected pool { public: object_pool(); ~object_pool(); //malloc和free并不会调用类的构造函数和析构函数 element_type *malloc(); void free(element_type *p); bool is_from(element_ ...
template<typename UserAllocator = ... > class pool { public: //接受一个size_type类型的整数,指示每次分配内存块的大小(不是内存池的大小) explicit pool(size_type requested_size); ~pool(); //返回requested_size size_type get_requested_size()const; //用void*指针返回从内存池中分配的内存块,大小为requested_size,如果分配失 ...
特化就是参数为确定的数据类型 显示特化: template<> void fun<const int&>(const int& i) {     cout << i << endl; } #include<iostream> #include<assert.h> #include<vector> using namespace std; template<class T> void fun(T *t,int begin,int end,double sum) { ...
生成exe图片 1.在项目文件夹里创建名为*.rc的文件,如myapp.rc。 2.文件中写入IDI_ICON1 ICON DISCARDABLE "myapp.ico"   其中,myapp.ico为图标的文件名。 3.将文件myapp.ico拷贝到项目文件夹内。 4.在解决方案资源管理器中,右键点击项目,添加myapp.rc及myapp.ico。 5.重新生成解决方案。 然后成release生成的exe文件夹里加上QtCore4.dll,QtGui4.dll 帮同学写个双色球代码来随便玩玩,以后再想办法把dll也去掉,第一个rar是对应的ui文件,第二个可以直接用,如果 ...

warning:resize event

    博客分类:
  • Qt
Calling resize() or setGeometry() inside resizeEvent() can lead to infinite recursion.

io读写

    博客分类:
  • c++
C #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int main() { FILE* f = fopen("a","w"); fwrite("test",1,strlen("test"),f); fclose(f); f = fopen("a","r"); char ...
weak_ptr是为配合shared_ptr而引入的一种智能指针来协助shared_ptr工作,它可以从一个shared_ptr或另一个weak_ptr对象构造,它的构造和析构不会引起引用记数的增加或减少。没有重载*和->但可以使用lock获得一个可用的shared_ptr对象 template<class T> class weak_ptr { public: weak_ptr(); template<class Y> weak_ptr(shared_ptr<Y> const & r); weak_pt ...
shared_ptr早期叫做counted_ptr,它实现了引用计数型的智能指针,与scoped_ptr一样包装了new操作符在堆上分配的动态对象,但可以被自由地拷贝和赋值。同时它弥补了auto_ptr因为转移语义而不能把指针作为STL容器元素的缺陷。 share_ptr是 ...
Bourne shell:贝尔实验室开发,现有的unix系统基本都提供 Bourne-again shell:GNU shell,所有linux系统都提供这种shell,兼容Bourne shell C shell:Bill Joy在伯克利开发的,所有BSD版本都提供这种shell Korn shell:是Bourne shell的后继者,由David Korn在贝尔实验室研发 TENEX C shell:C shell的加强版

什么是内核

内核(kernel),它相对较小,控制计算机硬件资源,提供程序运行环境。它是进程的管理者。如:linux是GNU操作系统使用的内核 内核的接口被称为系统调用(system call),shell是一种特殊的应用程序,它为运行其他应用程序提供一个接口 内核提供模块(module),模块是一个目标文件,其代码可以在运行时链接到内核或从内核解除链接。 开发的特点: 不能访问C库,必须使用GNU C 缺乏像用户空间那样的内存保护机制:内核中的内存都不分页 浮点数很难用 只有一个很小的定长堆栈 由于内核支持异步中断,抢占和SMP,因此必须时刻注意同步和并发 要考虑可移植性
scoped_ptr是一个很类似auto_ptr的智能指针,它包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确的删除,但很重要的一点是scoped_ptr获取了对象的管理权,就无法再从它那里取回来 它只在对象析构的时候释放一次,对象析构的时候自动释放内存 source code template<class T> class scoped_ptr{ private: T *px; //private意味着指针不能被转让所有权 scoped_ptr(scoped_ptr const &); ...
为啥想学boost呢,因为它名气大?其实主要还是因为工作中有不要地方用到了不少智能指针,bind等一些东西,想直接完全理解起来还有点难。 boost.smart_ptr库提供了六种智能指针,包括scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr和instrusive_ptr,来增强std::auto_ptr,而且是异常安全的。它们都很轻量,速度和原始指针差不多,但是类型T有一个要求:类型T的析构函数不能抛出异常,析构函数最好不要抛出异常不是被很多大牛重申了N次了吗? 原因是:1.能够在异常转递的堆栈辗转开解(stack-unwindi ...

RAII

RAII(资源获取即初始化,Resource Acquisition Is Initialization),在使用资源的类的构造函数中申请资源,然后使用,最后在析构函数中翻译资源
打算学习下模板,boost,元编程。相关文章,代码基于C++ Template,C++模板元编程,和国人的Boost程序库完全开发指南,这本书讲的很实在,给它免费打下广告,我乐意,哈哈!
Global site tag (gtag.js) - Google Analytics