在什么情况下,会产生Access violation问题啊?
具体情况如下:
我在通讯录中打开对话框,然后添加一条信息,当我 把这条信息用sendto发送出去的时候,产生了地址冲突的错误,Sendto 相关函数没有问题,在请各位大侠指教一二。
解决方案 »
- VS2010 MFC问题 高分求解
- 求教!关于登录界面和数据库
- fp-tree算法的树建好了,怎样获得频繁项目集呢?
- mfc中关于messagebox的一个问题,请教各位了
- MFC开发一个ActiveX控件,在VC下没有问题,在CBuilder和delphi7上有问题
- 怎样实现文件改名?
- 教哪位高手有并口ECP协议下DMA进行数据传输的例子
- vc环境下用malloc()函数如何用
- 数据初始化的问题
- 小弟初学VC,请帮忙看一下下面的程序,怎么了?如果大家对学VC有什么见意,也欢迎赐教
- .h文件中,class声明类和include包含类的区别
- 厚着脸皮求。谁能帮我做个简单的例子,不甚感激。倾家荡产啊。
unsigned char *UserNBR, unsigned char *GroupName)
{
//增加组
TRACE("发送增加组:hUser->%d,UserNBR->%s,GroupName->
%s\n",hUser,UserNBR,GroupName); unsigned char SendBuffer[1000];
BOOL result;
memset(SendBuffer,0,1000); SendBuffer[0]=1;
SendBuffer[1]=2;
SendBuffer[2]=3;
SendBuffer[3]=0;
SendBuffer[4]=50;
*(short*)&SendBuffer[5]=hUser;
SendBuffer[7]=1;
SendBuffer[8]=0;
SendBuffer[9]=strlen((char*)UserNBR);
strncpy((char*)&SendBuffer[10],(char*)UserNBR,strlen((char*)UserNBR));
strncpy((char*)&SendBuffer[35],(char*)GroupName,20);
// SendBuffer[9]= 11;
// strncpy((char*)&SendBuffer[10],"13800571234",11);
// strncpy((char*)&SendBuffer[35],"22",2); result=User_Send_SwitchBuffer(SendBuffer,55);
return result;
}BOOL CMeBusinessSocket::User_Send_SwitchBuffer(const char *SendBuffer, int count)
{
BOOL ret;
ret=SendTo(SendBuffer,count,9999,"192.200.188.102");
return (ret!=SOCKET_ERROR);
}类是这个CMeBusinessSocket,Contact_Send_Business_SwitchAddGroupInfo()是其中一个函数
User_Send_SwitchBuffer()是其中传送给另一个UDP的函数 (端口:9999,IP:192.200.188.102)如果我在CMeBusinessSocket的其它函数里面调用
Contact_Send_Business_SwitchAddGroupInfo(hUser,UserNBR,GroupName);
则在BOOL CMeBusinessSocket::User_Send_SwitchBuffer(const char *SendBuffer, int count)
里面的SendTo()是可以发送成功,不会出现Access Violation错误但当我在另一个对话框时,CTransDlg这个类是一个对话框,里面有刚刚CMeBusinessSocket的对像
CMeBusinessSocket* TransMeBusinessSocket;
在对话框CTransDlg里又有一个对话框TransAddGroupDlg;[作用就是一个ComBoBox,把填入的信息Copy到CTransDlg中去]
void CTransDlg::OnAddgroupSwitch()
{
// TODO: Add your command handler code here
short hUser;
unsigned char UserNBR[25];
unsigned char GroupName[20]; hUser = 0;
// strncpy((char*)UserNBR,(char*)pSupTermDlg->m_szUserNBR,25);
// strncpy((char*)UserNBR,strSwitchID,25);
strncpy((char*)UserNBR,"13800571234",25); TransAddGroupDlg = new CTransAddGroupDlg;
if(IDOK==TransAddGroupDlg->DoModal()) //跳出对话框,里面就是出现一个ComBoBox
//目的就是把ComBoBox的信息加到GroupName里面去
{
strncpy((char*)GroupName,(char*)(LPCTSTR)TransAddGroupDlg->m_strGroupName,20);
strncpy((char*)GroupName,"加的组名",20);
TransMeBusinessSocket->Contact_Send_Business_SwitchAddGroupInfo
(hUser,UserNBR,GroupName);
}
if(TransAddGroupDlg)
delete TransAddGroupDlg;
TransAddGroupDlg=NULL;
UpdateData(TRUE);
}但我在CTransDlg里,弹出CTransAddGroup的对话框时,然后填入我要的信息,比如:计算机1班,
这时在
BOOL CMeBusinessSocket::Contact_Send_Business_SwitchAddGroupInfo(short hUser,
unsigned char *UserNBR, unsigned char *GroupName)
里面的信息内容都是正确的,但在这个函数运行到
BOOL CMeBusinessSocket::User_Send_SwitchBuffer(const char *SendBuffer, int count)
中的SendTo(SendBuffer,count,9999,"192.200.188.102")时,就会出现一个
Unhandled exception in **.exe (MFCN42D.DLL) Oxc0000005:Access Violation;其中,BOOL CMeBusinessSocket::User_Send_SwitchBuffer(const char *SendBuffer, int count)这个函数没有问题的,因为其它信息都能发送成功,
请教这个问题应该怎么样解决呀,我试了好多时间都没有成功呀。希望大家给我指点一下呀。真是谢谢的说: