来看一个问题: 在使用C++ STL的vector时,下面三种写法有什么不同呢?其内存分配是怎么样的呢? <T>();vec和其中的元素T都保存在堆上; 对于std::vector<T*> vec;vec在栈上(stack),而其中的元素T保存在堆上(heap);和第一种情况类似。 可以看到std::vector中的元素A是在栈上创建的。而且是在push_back的时候将栈上对象通过拷贝复制到堆上去的。 *>需要手动delete释放栈上的空间。 但是push_back的时候std::vector<T>会比std::vector<T*>多一个拷贝构造的过程。