【发布时间】:2014-03-22 02:24:25
【问题描述】:
我知道指针在某种程度上很像数组(如果不是相同的话),但我无法理解何时应该显式删除指针。
以这段代码为例:
#include <vector>
int main(int argc, char** argv)
{
std::vector<char*> strings;
strings.push_back(argv[0]);
return 0;
}
现在很明显,没有一个头脑正常的人会制作一个完全像这样的程序,但为了纯粹的讨论,假设这是我的程序。我应该删除strings.at(0) 以避免那里的内存泄漏,还是在程序终止时将数据视为要销毁的字符数组?
同样,假设我有一个我创建的类的vector,并且我已将它们全部声明为该类的new 实例。然后我需要删除,还是可以?
我是一名自学成才的程序员,所以这些复杂(有时是危险的)概念让我变得偏执。
【问题讨论】:
-
你被严重误导了;指针和数组根本不是一回事。阅读comp.lang.c FAQ 的第 6 节;它也适用于 C++。
-
作为一个对内存管理感兴趣的自学成才的程序员,我相信你应该看看(如果你还没有看过)智能指针在 C++11 中是如何工作的
标签: c++ arrays pointers memory-management