有关VC++中指针new与delete的问题,高手帮忙啊

/*编程35建立一个类WORD,统计一个英文字符串中的英文单词个数。字符串中的各英文单词以一个或多个空格分隔。如字符串“Iamastudent”中的英文单词个数为4。具体... /* 编程35 建立一个类WORD,统计一个英文字符串中的英文单词个数。字符串中的各英文单词以一个或多个空格分隔。 如字符串“I am a student”中的英文单词个数为4。具体要求如下:(1) 私有数据成员。 char *s:存放字符串s(的首地址)。 int c:存放字符串s中的英文单词的个数。(2)公有成员函数。 WORD(char *p):构造函数,用参数p初始化s。(先为s动态分配存储空间,再进行初始化) void process():统计字符串中的英文单词个数。 void print():输出字符串及单词个数。 ~WORD():析构函数,释放私有成员s的存储空间. (3)在主函数中对该类进行测试。定义一个WORD类的对象w,并用字符串"She is a nice girl"初始化对象w。 通过w 调用成员函数,统计并输出字符串中英文单词的个数。 */ #include #include class WORD { private: char *s; int c; public: WORD(char *p); void process(); void print(); ~WORD(); }; WORD::WORD(char *p) { s=new char[strlen(p)+1]; strcpy(s,p); } void WORD::process() { char *n=s; c=0; while(*n) { while(*n==' ')n++; if(*n!=NULL)c++; while(*n!=' '&&*n!=NULL)n++; } } void WORD::print() { cout< 展开
 我来答
淡忘送的0160
2015-04-12 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:53.3万
展开全部
把s.~WORD()注释掉 你的类在生命结束时系统会自动回收,就是自动调用析构函数,而不应该由你来调用,如果你调用了一次,系统又调用一次,那两次delete肯定会出问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱七情RYYO
2015-04-13 · 超过55用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:49.6万
展开全部
楼上说的对。 还有,new分配了空间以后你都不看看返回的指针是不是null就用了么?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式