关于delete new 与char*类型还有容器之间的有关问题
关于delete new 与char*类型还有容器之间的问题C/C++ codelistchar* chrslstdo{char *pnew charcin.c
关于delete new 与char*类型还有容器之间的问题
C/C++ codelist<char*> chrslst;do{char *p=new char;cin.clear();cin >>p;chrslst.push_back(p);}while(cin);cin.clear();
1 >请问如何删除我new出来的p内存呢?
2 >另外我的new是在do的作用域里面进行的,如果出了
do就再也无法寻找这个内存了,请问这个内存在do{}作用域过后还会持续占用内存还是被自动释放掉?
3 >像上面我的chrslst容器是复制我*p的值进容器里面,还是直接传递我p的地址?
请高手详细的说说, 刚学C++不久 ,基础掌握不是很好, 烦请各位悉心指教一下!谢谢!
我试过在chrslst.push_back(p);后面加一句 delete [] p; 但编译器报错了:
heap corruption detected: after normal block(#128) at 0x00144600.
Crt detected that the application wrote to memory after end of heap buffer.
[解决办法]1 delete p; 如果数组,则delete [] p;
2 new出来的内存,程序结束前都不会自动释放
3 是复制p,不会赋值*p
这边可以直接用 char p; 这样比较方便
如果用指针的,释放的时候还得写一个循环,
按顺序取得容器的每个元素,然后从容器中删掉该元素,
然后 才能删除该元素所指向的地址。