有关delete回收空间的简单问题
对于字符数组,是这样回收的
char * p = new char(100);
……
delete[] p;
如果是vector,是不是只要delete p就可以了,如下:
std::vector <int> *p=new std::vector <int> ;
......
delete p;
我的理解是,通过new操作,创建了一个vector对象,p指向它,所以只需要delete p,这样机器自然知道这个对象有多大,是不是这样?我的理解正确吗?
对于list等其他数据结构,也是这样做就可以了?
(因为我运行一个小程序,通过任务管理器查看该进程内存消耗,发现delete p后,内存数字没有减少,反而还多占用了几个k,所以才有此一问)
希望高手能作详细的解释。
谢谢!
[解决办法]
char * p = new char(100); //笔误吧!
应该是 char * p = new char[100];
^_^
[解决办法]
std一般直接声明的吧,它作为容器,自己管理自己元素的内存分配的.你做的那个对象只是针对那个容器的,所以这里要理解容器和元素的关系.