关于数组动态内存,deleter 的问题!
请大家先看,这个是C++ Primer中的练习:
编写程序读入一组string类型的数据,并将它们存储在vector中。接着,把该vector对象复制给一个字符指针数组。为vector中的每个元素创建一个新的字符数组,并把该vector 元素的数据复制到相应的字符数组中,最后把指向该数组的指针插入字符指针数组。
在最后删除 char **ch = new char *[str.size()];
char *temp = 0 ....temp = new char[ (*iter).size() +1 ];
的时候我用的是数组删除方法,
delete [] temp;
delete [] ch;
请问这样删除完全吗?正确吗?
还是应该用:For语句来一个一个的删除?
是不是动态数组的删除和一般数组删除的不一样?
其中一个是指针的指针,是不是这个应该进入到内里再删除一次?
如果有时间的话希望回答的朋友可以讲的详细些,有相关的网页讲这些也行,不过我是刚学的,太深的东西看不懂〜〜
先谢谢各位了!
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector < string > vect;
string str;
cout << "输入字符串, 以Control + D结束:\t";
while ( cin >> str )
vect.push_back( str );
char **ch = new char *[str.size()];
char *temp = 0;
size_t ix = 0;
for(vector<string>::iterator iter = vect.begin(); iter != vect.end(); ++iter, ++ix )
{
temp = new char[ (*iter).size() +1 ];
strcpy( temp, ( *iter).c_str() );
ch[ix] = temp;
}
cout << "输出最终char **ch的结果:\t";
for( ix = 0; ix != str.size(); ++ix )
cout << ch[ix] << endl;
delete [] temp;
delete [] ch;
return 0;
}