以下程式為我代碼內一部分,,不知道在除錯運行中會崩潰呢。。求哪位大神解答。
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 = "[email protected]";
mailInfo.m_UserPassWord = "123";
mailInfo.m_Sender = "[email protected]";
mailInfo.m_vReceiversAddress.push_back(std::string("[email protected]"));
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的原因嗎??
uj5u.com熱心網友回復:
你結構體里面的那些指標不分配空間?要么你就用字符陣列,要么就在使用前使用new 或malloc分配空間!uj5u.com熱心網友回復:
SMailInfo(){memset(this,0,sizeof(SMailInfo));}里面有string成員變數,不能對這個物件使用memset函式
uj5u.com熱心網友回復:
你這個結構體里定義的是字符指標,但是你的代碼中并沒有看到有分配記憶體的地方就直接賦值了。不AV才怪。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113008.html
標籤:基礎類
上一篇:求問
