从 VapourSynth API 到 C++ 基础知识

副标题:从 C + isotream 到 C++

(这是1月底写一点随笔,然后就被丢到一边不管了)

智能指针

全面讲述智能指针的文章:https://juejin.im/post/5dcaa857e51d457f7675360b

熟悉的unique_ptr,是“拥有独有对象所有权语义的智能指针”。

智能指针的释放

一个基本概念,要用.而非->。(https://blog.csdn.net/delphicui/article/details/4213811)

1
2
smartPointer.release();   // 正确
smartPointer->release(); // 错误

在 VapourSynth Plugin 的编写时,要在Free()函数里写delete d;,但又在Create()函数里写了d.release()。可不可以这么理解,智能指针dCreat()函数里被声明,所以要在Create()函数内释放一次,但其他地方也用到了d,所以又要写一次delete d我感觉我在胡说八道

智能指针与数组

用智能指针创建数组,类似下面这样。

1
std::unique_ptr<float[]> array[5];

而且用后并没有释放,这是自然,毕竟智能指针的本意即是如此。

但我不知道,对于查表用的大数组,有没有必要“升级”成智能指针,对于使用new创建的指针呢?

com组件

(被淘汰的技术)

(我不知道 VapourSynth API 里的 com 是不是这个 com)

lamda表达式

(额外延伸的,稍后再看)