这个程序运行时为什么会崩溃,,求大神解释

Heaven13483 2014-09-30 02:49:11
以下程序为我代码内一部分,,不知道在调试运行中会崩溃呢。。求哪位大神解答。

sendmail.h文件
#pragma once  
#include <vector>
using namespace std;
struct SMailInfo //邮件信息
{
char* m_UserName;
char* m_UserPassWord;
std::string m_SenderName;
char* m_Sender;
std::vector<std::string> m_vReceiversAddress;
char* m_Title;
char* m_Body;
char* m_IPAddr;
char* m_IPName;
SMailInfo(){memset(this,0,sizeof(SMailInfo));}
~SMailInfo()
{}
};

class CSendMail
{
public:
CSendMail(void){ m_FileBuff=NULL;
};
~CSendMail(void){ if(NULL != m_FileBuff)
free(m_FileBuff);
m_FileBuff=NULL;
};

public:
bool SendMail(SMailInfo &smailInfo)
{
memcpy(&m_sMailInfo,&smailInfo,sizeof(smailInfo));
if(m_sMailInfo.m_Body==NULL
|| m_sMailInfo.m_IPAddr==NULL
|| m_sMailInfo.m_IPName==NULL
|| m_sMailInfo.m_vReceiversAddress.empty()
|| m_sMailInfo.m_Sender==NULL
|| m_sMailInfo.m_Title==NULL
|| m_sMailInfo.m_UserName==NULL
|| m_sMailInfo.m_UserPassWord==NULL)
{
return false;
}
SOCKET sock;

return true;
}

protected:

std::vector<std::string> m_pcFilePath;
char m_SendBuff[4096];//发送缓冲区
char m_ReceiveBuff[1024];
char* m_FileBuff;//指向附件内容
SMailInfo m_sMailInfo;
};


main.cpp文件
#include<windows.h>
#include<wininet.h>
#include<iostream>
#include <time.h>
#include <vector>
#include "sendmail.h"
using namespace std;

void main()
{
SMailInfo mailInfo;
mailInfo.m_UserName = "haiwenyin@appfactory.cn";
mailInfo.m_UserPassWord = "123";
mailInfo.m_Sender = "haiwenyin@appfactory.cn";

mailInfo.m_vReceiversAddress.push_back(std::string("haiwenyin@appfactory.cn"));

mailInfo.m_Title = "崩溃文件";
mailInfo.m_Body = "快装崩溃文件";
mailInfo.m_IPAddr = "";
mailInfo.m_IPName = "Mail.appfactory.cn" ;
//
//
CSendMail smtpMail;
bool bsuccess = smtpMail.SendMail(mailInfo);
return ;

}



调试时崩溃定位到了xmemory的 void deallocate(pointer _Ptr, size_type)
{ // deallocate object at _Ptr, ignore size
::operator delete(_Ptr);
}
位置。。是vector的原因吗??
...全文
429 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2014-10-01
  • 打赏
  • 举报
回复
你这个结构体里定义的是字符指针,但是你的代码中并没有看到有分配内存的地方就直接赋值了。不AV才怪。
gzliudan 2014-09-30
  • 打赏
  • 举报
回复
SMailInfo(){memset(this,0,sizeof(SMailInfo));} 里面有string成员变量,不能对这个对象使用memset函数
QIUSQJF 2014-09-30
  • 打赏
  • 举报
回复
你结构体里面的那些指针不分配空间?要么你就用字符数组,要么就在使用前使用new 或malloc分配空间!

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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