网络建站程序/关键词seo排名优化

最近在写OpenCL遇到了一些C++动态内存的问题。由于之前一直在用Python,大一学的C基本都忘光光了。故简单学习了一下,写下本文作为笔记。
用一个动态创建的数组作为例子,其他(如struct)也应该类似。
首先是创建一个长度为10的数组,然后删除掉:
#include
同样的目标,可以换第二行为比较C++的写法:
int
如果怕忘记删除,可以用smart pointer(事实上用这个会更好,关于其overhead,可以看看这里的讨论
How much is the overhead of smart pointers compared to normal pointers in C++?stackoverflow.com
)来自动释放指针指向的内存:
#include
可以看到上面在allocate memory的时候用了两种方法,一个是new,一个是malloc。具体区别可以看:
in-what-cases-do-i-use-malloc-and-or-newstackoverflow.com
总的来说,用new会自动调用constructor再allocate memory。相较于前者,malloc只会做后一步。所以在C++里面其实保持用new是一个不错的选择。而且malloc还另外要做一次typecasting,比较麻烦。
另外感谢IceBear指出错误,new需要和delete搭配,而malloc需要和free搭配。