跪求解释下面的代码那里出问题了 在线等解释
#define MAX_MSG_LEN 65536
#define TYPE_OF_CMD_MSG 1000
UpdateData();
char* str = new char;
sprintf(str, "LOGIN:USER=%s,PSWD=%s", m_lgname, m_passwd);//
m_deal.sendMsg.cmd = str;
m_deal.sendMsg.dlgCtrl = DLGLGN;
m_deal.sendMsg.sequence = 1;
m_deal.sendMsg.service = "SRVM";
m_deal.sendMsg.snLogin = m_id;
m_deal.sendMsg.txCtrl = TXBEG;
char sBuff[MAX_MSG_LEN]= "";
char rBuff[MAX_MSG_LEN]= "";
m_deal.SendMsg(m_socket, sBuff, TYPE_OF_CMD_MSG);
m_deal.RecvMsg(m_socket, rBuff, TYPE_OF_CMD_MSG);
下面的函数写在类 CDeal (m_deal)
/*************************发送消息***************************/
int CDeal::SendMsg(int m_sockfd, char *sendBuff,int MsgType)
{
int sendLen = 0;
int _result = Encode(sendMsg, sendBuff, sendLen, MsgType);
int x=send(m_sockfd, sendBuff, strlen(sendBuff)+1, 0);
if( x == SOCKET_ERROR)
AfxMessageBox("");
return 0;
}
/*************************接收消息**************************/
int CDeal::RecvMsg(int m_sockfd, char *recvBuff, int MsgType)
{
int recLen=0;
recLen=recv(m_sockfd, recvBuff+recLen, 100, 0);
if(recLen>0)
{
//AfxMessageBox("\nreceive login ack message...\n\n");
//解码消息并获取相应的操作结果
Decode(recvMsg, recvBuff, recLen, MsgType);
return Success;
}
return Failure;
}
这段代码是onbtnclick
程序运行的时候没有问题
点击btn的时候出现下面的错误:
"0x7c9308f3" 指令引用的 "0x00004e49" 内存. 该内存不能为 "written"
[解决办法]
char* str = new char;
内存分配太少了
[解决办法]