char* 装换CString 在Debug没错,直接运行出错。

hbuzzd 2009-03-25 08:07:40
CString CJourneyManager::GetStreetDataName(int index)
{
CString name ;
name = rpOutPut.pstRouteSegList[index].pcName; //后者为char*

if(name.IsEmpty())
{
name.Format(_T("无名小路"));
}
else
{
name.GetBuffer( rpOutPut.pstRouteSegList[index].ulLength);
}
return name;
}

//函数是会循环调用的。index在0-4没错 ,5就有错。6以后又没错。觉得是数据的问题,但为什么在Debug下面index=5时也不会出错,直接运行就会报错呢。
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
name = rpOutPut.pstRouteSegList[index].pcName; //后者为char*

char到CString,为何不Format??
「已注销」 2009-03-25
  • 打赏
  • 举报
回复
GetBuffer之后要ReleaseBuffer的。
downmooner 2009-03-25
  • 打赏
  • 举报
回复
搞不懂

你既然结构体里有ulLength表示字符串的长度,那你给name赋值时 怎么不先判断?

可能就是因为没先判断长度。导致赋值后的name某个index出错。复制了个野指针

65,211

社区成员

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

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