程序出现段错误

nonego 2007-11-01 10:12:05
一个c++primer的习题,4.35题。运行时是段错误,大家看看是怎么回事,用gdb调试可以看出是到最后cout时出现段错误
题目要求是输入几个字符串,然后用字符数组保存,然后把字符数组的指针存在一个字符指针数组里。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
string s;
vector<string> vec;
while(cin>>s)
{
vec.push_back(s);
}
char **str=new char*[vec.size()];
for(vector<string>::iterator iter=vec.begin(),end=vec.end()
;iter!=end;iter++)
{
char *ss=new char[(*iter).size()+1];
for(string::size_type i=0;i!=((*iter).size());i++)
{
ss[i]=(*iter)[i];
}
ss[(*iter).size()]='\0';
*str=ss;
str++;
}
int size=vec.size();
for(int i=0;i<size;i++)
{
cout<<str[i]<<"";
// delete [] str[i];
}
cout<<endl;
delete [] str;
return 0;
}
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlwaysSLH 2007-11-01
  • 打赏
  • 举报
回复
//书写问题,<<和>>用半角,别用全角

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string s;
vector <string> vec;
while(cin>> s)
{
vec.push_back(s);
}
char **str=new char*[vec.size()];
for(vector <string> ::iterator iter=vec.begin(),end=vec.end()
;iter!=end;iter++)
{
char *ss=new char[(*iter).size()+1];
for(string::size_type i=0;i!=((*iter).size());i++)
{
ss[i]=(*iter)[i];
}
ss[(*iter).size()]= '\0 ';
*str=ss;
str++;
}
int size=vec.size();
for(int i=0;i <size;i++)
{
cout<<str[i]<<" ";
// delete [] str[i];
}
cout<<endl;
delete [] str;
return 0;
}
ckt 2007-11-01
  • 打赏
  • 举报
回复
把你原来注释的补上,否则会内存泄露
ckt 2007-11-01
  • 打赏
  • 举报
回复
str的地址被修该了
设置个中间量

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string s;
vector<string> vec;
while(cin>> s)
{
vec.push_back(s);
}
char**str = new char*[vec.size()];
char** pTmp = str;
for(vector<string>::iterator iter=vec.begin(), end = vec.end() ; iter != end; iter++)
{
char*ss = new char[(*iter).size()+1];
for(string::size_type i=0;i != ((*iter).size()); i++)
{
ss[i]=(*iter)[i];
}
ss[(*iter).size()]= '\0';
*pTmp = ss;
pTmp++;
}
int size=vec.size();
for(int i=0;i <size;i++)
{
cout << str[i] << " ";
// delete [] str[i];
}
cout <<endl;
delete [] str;
return 0;
}

微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧