内存溢出的问题,帮我看一下有什么问题?

mxj22 2007-04-17 10:16:24
每次运行都会出现错误,主要是在memset这里出现Stack OverFlow 看看的代码有什么问题?
else if(!strcmp(m_strButtonName,"START LOG"))
{
char *m_pstrLogLevel;
char *m_pstrModule;
char *m_pstrFunction;
char *m_pstrInformation;
char *m_pstrGetMsg;
char *m_pstrShowLog=new char[100];
if(m_pstrShowLog==NULL)
{
m_strFilterMsg="1";
UpdateData(true);
}


memset(m_pstrShowLog,0,sizeof(m_pstrShowLog));

m_pstrGetMsg=new char[pCopyDataStruct->cbData];
strcpy(m_pstrGetMsg,(char*)pCopyDataStruct->lpData);
m_pstrLogLevel=strtok(m_pstrGetMsg,",");
m_pstrModule=strtok(NULL,",");
m_pstrFunction=strtok(NULL,",");
m_pstrInformation=strtok(NULL,",");

strcat(m_pstrShowLog,m_pstrLogLevel);
strcat(m_pstrShowLog," ");
strcat(m_pstrShowLog,m_pstrModule);
strcat(m_pstrShowLog," ");
strcat(m_pstrShowLog,m_pstrFunction);
strcat(m_pstrShowLog," :");
strcat(m_pstrShowLog,m_pstrInformation);
UpdateData(true);
if(strstr(m_pstrShowLog,m_strFilterMsg)!=NULL)
{
char *m_strSystemTime=new char[26];
_strtime(m_strSystemTime);
strcat(m_strSystemTime," ");

strcat(m_strSystemTime,m_pstrShowLog);
m_LogMsg.AddString(m_strSystemTime);
pstrData=m_strSystemTime;

m_LogMsg.SetCurSel(m_LogMsg.GetCount()-1);
delete []m_strSystemTime;
}
else
{

}

delete m_pstrGetMsg;
delete m_pstrShowLog;
}
...全文
218 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
missilery 2007-04-17
  • 打赏
  • 举报
回复
memset(m_pstrShowLog,0,strlen(m_pstrShowLog));//memset(m_pstrShowLog,0,sizeof(m_pstrShowLog));
mxj22 2007-04-17
  • 打赏
  • 举报
回复
好像不是我想要的,这个方法我还是先不用了,我自己debug一下吧,谁知道的就留言,Thanks!
taodm 2007-04-17
  • 打赏
  • 举报
回复
{
string m_pstrGetMsg = regex_replace(,(char*)pCopyDataStruct->lpData, regex("(.*?),(.*?),(.*?),(*?),.*"), "$1 $2 $3 :$4");
UpdateData(true);
。。。。
mxj22 2007-04-17
  • 打赏
  • 举报
回复
什么意思呀,加正,不太懂呀,给个几名代码看一下
taodm 2007-04-17
  • 打赏
  • 举报
回复
哎,用c++的string加正则表达式就啥事都没有了,何必那么复杂。
hcy830527 2007-04-17
  • 打赏
  • 举报
回复
m_pstrShowLog是指针sizeof(m_pstrShowLog)好像只有4个字节
taodm 2007-04-17
  • 打赏
  • 举报
回复
买本C++ Primer认真看就可以了。
在公司是用不了msn的。
mxj22 2007-04-17
  • 打赏
  • 举报
回复
我已经解决问题,不过谢谢你耐心的指导,有机会还是向你请教C++的问题,我的C++还不是很好,能加我的MSN吗?mengxiangjun_1985@hotmail.com
taodm 2007-04-17
  • 打赏
  • 举报
回复
没有正正式式学过c++吧,连string都不知道。那么,MFC的CString怎么也不知道使用?
你现在只有老老实实上调试器慢慢找原因了。
mxj22 2007-04-17
  • 打赏
  • 举报
回复
还是不太明白m_pstrShowLog不会越界吧,100已经够装下我所要存的字符串了,你说的string 我不太清楚,不知道怎么用?
taodm 2007-04-17
  • 打赏
  • 举报
回复
你的m_pstrShowLog是不是也越界了?才开了100字节,也太短了。
不用string的纯C代码,自然会在内存上栽一个又一个跟头的。
mxj22 2007-04-17
  • 打赏
  • 举报
回复
好的,但是我delete m_strSystemTime之后还能delete m_pstrShowLog吗?我试了,可是有错误,帮分析一下?
taodm 2007-04-17
  • 打赏
  • 举报
回复
当然有问题,strcat(m_strSystemTime,m_pstrShowLog);肯定越界了
mxj22 2007-04-17
  • 打赏
  • 举报
回复
这个问题解决了,现在就是你们帮看一下char *m_strSystemTime=new char[26]有没有问题,能不能delete?我一delete就会退出程序

64,651

社区成员

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

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