显然,在使用Direct X时,我们正在大量处理指针,但是我在MSDN上找不到的问题是:Direct X是否在内部使用“new”创建内存?
例:
ID2D1GeometrySink * pSink;
path->Open(&pSink); // did this command use "new" internally?
在MSDN中,他们仅使用
pSink = NULL
从同一变量创建多个接收器。那么会不会有内存泄漏? 最佳答案
由于DirectX使用COM,因此必须遵循COM维护内存的规则。
因此,如果方法返回接口(interface)指针,则调用者负责释放该指针。
通常,我们永远不知道返回的指针的性质。在这种特殊情况下,我们不知道ID2D1GeometrySink是否在此方法内分配,还是这是一个预先创建的对象。关于管理返回的指针,您需要了解的所有内容是,在不需要此指针时应调用Release。
我也建议使用在析构函数中调用Release的包装器,我的意思是像CComPtr之类的类。在这种情况下,您不需要自己调用AddRef / Release。
关于c++ - Direct 2D是否将指针留在内存中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31636552/