D语言内存管理杂谈

D是一个系统级语言,但是也是一个GC语言(虽然现在GC在可选化,但是有的语言特性是基于GC的,例如:关联数组,数组连接等等)。D是GC语言,但不是全GC语言,D同时也提供了简单的手动管理内存的方式。所以下面我就分为GC,NoGC的方式来说。

Continue reading “D语言内存管理杂谈”

Qt父子对象内存管理实现简析

用Qt大家都知道Qt有一套自己的内存管理机制:父子对象管理机制。适用于所有继承于QObject的类。即在一个类中指定他的父对象,可以用void QObject::setParent(QObject * parent)函数指定,也可以在构造时传入参数,一般继承自QObject的类,Qt-c自动生成的类模板的构造函数都是explicit 类名(QObject *parent = 0);这个parent就是你可以制定的父对象。当一个对象删除之后,会自动删除他的所有的子对象,这样你就可以有很多new,但是只有一个delete。(注:这个父子对象关系和继承的父子类是不一样的,而且可以说基本没关系的。)

下面我们就扒下Qt的源码,找下它的实现。 Continue reading “Qt父子对象内存管理实现简析”