通过一个简单的例子介绍一下gcc的__attribute__ ((constructor))属性的作用。gcc允许为函数设置__attribute__ ((constructor))和__attribute__ ((destructor))两种属性,顾名思义,就是将被修饰的函数作为构造函数或析构函数 ...
分类:
其他好文 时间:
2018-07-11 12:19:06
阅读次数:
173
多线程服务器 当前的机器的红利已经结束了 主频已经达到了一个极限了 多线程有自身的优势 API日益成熟,操作系统和标准库都支持了多线程。 用多线程编程要在数据IO和计算找到平衡点。 一个是带宽,一个是数据计算。 linux下fork ,window下的Creat_Process。 多线程编程,如果显 ...
分类:
其他好文 时间:
2018-07-10 23:35:17
阅读次数:
191
最近被问到了C++内存池的问题,其中不免涉及到在指定内存地址调用对象构造函数以及显示调用对象析构函数的情况。 C++中new的用法 new是C++中用于动态内存分配的运算符,在C语言中一般使用malloc函数。 (1)plain new顾名思义就是普通的new,就是我们惯常使用的new。分配内存,调 ...
分类:
编程语言 时间:
2018-07-08 10:37:20
阅读次数:
239
当我们定义一个类的时候,如果是一个空的类,编译器默认提供了默认构造函数,拷贝构造函数,拷贝赋值函数,内敛析构函数。 如果派生出一个新的类继承自空类,编译器生成的是一样的,不过在构造的时候会调用基类的构造函数。 已经写过了部分类函数,编译器会将剩下的函数给你默认生成。 如果有自己的构造函数,编译器会生 ...
分类:
编程语言 时间:
2018-07-07 20:23:34
阅读次数:
155
析构函数与Dispose()方法的区别1. Dispose需要实现IDisposable接口。 2. Dispose由开发人员代码调用,而析构函数由GC自动调用。 3. Dispose方法应释放所有托管和非托管资源。而析构函数只应释放非托管资源。因为析构函数由GC来判断调用,当GC判断某个对象不再需 ...
分类:
其他好文 时间:
2018-07-06 17:45:13
阅读次数:
159
class Student:Person{ }; Student s; 1. Person p=s; // 可以将具体的赋值给大的,指针也行。 2. Person * p=new Student; delete p; p=NULL; 此时只调用Person的析构函数,没有调用Student的析构函数 ...
分类:
其他好文 时间:
2018-07-03 23:51:40
阅读次数:
144
阅读目录 前言 new与malloc的10点区别 1. 申请的内存所在位置 2.返回类型安全性 3.内存分配失败时的返回值 4.是否需要指定内存大小 5.是否调用构造函数/析构函数 6.对数组的处理 7.new与malloc是否可以相互调用 8.是否可以被重载 9. 能够直观地重新分配内存 10. ...
分类:
其他好文 时间:
2018-07-03 11:31:41
阅读次数:
168
1 //虚析构函数的学习 2 //如果外部程序使用new运算符定义了动态对象,则当外部程序结束时,要使用delete运算符删除该动态对象. 3 //但是如果外部程序利用赋值兼容原则,把动态申请的派生类对象地址赋给了基类对象指针,由于delete运算符隐含有析构函数的自动调用 4 //因此此时系统自动... ...
分类:
编程语言 时间:
2018-07-01 18:21:27
阅读次数:
150
1 //基类和派生类的析构函数 2 #include 3 class A{ 4 protected: 5 int a1; 6 float a2; 7 public: 8 A(int x1=0,float x2=0){ 9 a1=x1; 10 a2=x2; 11 ... ...
分类:
编程语言 时间:
2018-07-01 13:38:53
阅读次数:
147