VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 3050|回复: 11

求助一下程序运行崩溃是什么原因?

[复制链接]
34_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-28 16:59:24 | 显示全部楼层 |阅读模式
你好!小弟看了VC++高级班之网络编程编,遇到问题请高手指教一下。
我按照syc的思路做了程序(几乎一模一样)。
遇到的问题是客户端程序问题。客户端程序如附件。
执行程序,程序运行到这里出问题了。
        CLoginDlg loginDlg;

        OutputDebugString(_T("00000000"));

        INT_PTR dlgRet = loginDlg.DoModal();
        OutputDebugString(_T("sssssssss"));
        if (dlgRet == IDCANCEL)
        {
                return FALSE;
        }
        OutputDebugString(_T("11111111"));

用debugview的结果如下:
图1

图2是崩溃画面。

我现在有两个问题。
1.在客户端执行到程序EndDialog(IDOK);后为什么会崩溃,出现图2的画面。
程序为:
LRESULT CLoginDlg::OnNotifyMsg(WPARAM wParam, LPARAM lParam)
{
        UINT nmsg = wParam;
        switch (nmsg)
        {
        case MSG_CONNECT:
            {
                        BOOL bResult = (BOOL)lParam;
                        if (bResult == FALSE)
                        {
                                MessageBox(_T("连接服务器失败,请重试!"), _T("提示"), MB_OK);
                                GetDlgItem(IDC_IPADDRESS_IP)->EnableWindow(TRUE);
                                GetDlgItem(IDC_EDIT_PORT)->EnableWindow(TRUE);
                                GetDlgItem(IDC_EDIT_USER)->EnableWindow(TRUE);
                                GetDlgItem(IDC_EDIT_PWD)->EnableWindow(TRUE);
                                GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(TRUE);
                                SetWindowText(_T("登陆验证"));
                                return FALSE;
                        }
            }
                break;
        case MSG_LOGIN:
                {
                        BOOL bResult = (BOOL)lParam;
                        if (bResult == FALSE)
                        {
                                MessageBox(_T("登陆失败,请检查用户名和密码!"), _T("提示"), MB_OK);
                                GetDlgItem(IDC_IPADDRESS_IP)->EnableWindow(TRUE);
                                GetDlgItem(IDC_EDIT_PORT)->EnableWindow(TRUE);
                                GetDlgItem(IDC_EDIT_USER)->EnableWindow(TRUE);
                                GetDlgItem(IDC_EDIT_PWD)->EnableWindow(TRUE);
                                GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(TRUE);
                                SetWindowText(_T("登陆验证"));
                                return FALSE;
                        }
                        else
                        {
                                EndDialog(IDOK);
                        }
                }
                break;
        default:
                break;
        }
        return TRUE;
}

第二:程序中CClient对象是在CLoginDlg建立的,并且是他的成员,CLoginDlg 对象都EndDialog了,还能使用吗?不销毁么?
UINT CLoginDlg::ConnectThreadProc(LPVOID pParam)
{
        CLoginDlg *pThis = (CLoginDlg *)pParam;
        UINT nPort = 0;
        CString strIp, strUser, strPassword;
        nPort = pThis->GetDlgItemInt(IDC_EDIT_PORT);
        pThis->GetDlgItemText(IDC_IPADDRESS_IP, strIp);
        pThis->GetDlgItemText(IDC_EDIT_USER, strUser);
        pThis->GetDlgItemText(IDC_EDIT_PWD, strPassword);
       
        pThis->m_MsgClient = new CClient();
        pThis->m_MsgClient->SetTargetCallback(pThis->GetSafeHwnd());
        pThis->m_MsgClient->ConnectToServer(strIp, nPort, strUser, strPassword);
       
        return TRUE;
}

图1

图1

图2

图2

MsgClient.rar

135.52 KB, 下载次数: 10





上一篇:CDC画线资源释放问题
下一篇:打开cmd模拟输入telnet失败
19_avatar_middle
最佳答案
12 
在线会员 发表于 2020-12-28 20:58:59 | 显示全部楼层
EndDialog(IDOK); IDOK是什么鬼  别告诉我是按钮控件的ID号
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-12-29 00:05:36 | 显示全部楼层
SendMessage改成PostMessage
34_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-29 14:29:28 | 显示全部楼层
tony666 发表于 2020-12-29 00:05
SendMessage改成PostMessage

改成postmessage()问题还是一样的。
34_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-31 13:19:33 | 显示全部楼层
老大能否帮忙看看!呼叫SYC
86_avatar_middle
最佳答案
0 
online_vip 发表于 2021-1-12 16:18:50 | 显示全部楼层
你调试运行一下 看看到底是哪一行语句报错 不可以吗  你这样 截取点代码让人家怎么猜
86_avatar_middle
最佳答案
0 
online_vip 发表于 2021-1-12 16:21:39 | 显示全部楼层
求助一下程序运行崩溃是什么原因?



点这里调试看看 报错会自动跳转到报错位置




34_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-1-15 15:24:23 | 显示全部楼层
大家好!因为服务器程序没出问题,我就没有上传,只上传了客户端。
现在我把服务器和客服端程序都上传了,麻烦大家帮我查查问题。

MsgServer.rar

133.03 KB, 下载次数: 2

服务器端

34_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-1-15 15:25:59 | 显示全部楼层
x635775712 发表于 2021-1-12 16:21
点这里调试看看 报错会自动跳转到报错位置

大家,调试我倒会,就是多线程的调试乱跳,也走不到下的断点处。毕竟我是个初学者,请多多指教。
86_avatar_middle
最佳答案
0 
online_vip 发表于 2021-1-16 16:03:23 | 显示全部楼层
求助一下程序运行崩溃是什么原因?
你的代码逻辑没看,就是调试了一下。注释掉这个就可以了,
估计是删掉不存在的地址 导致报错,
要验证也很简单,你可以打印下这个内存地址,dd一下看看是否存在



31_avatar_middle
最佳答案
54 
在线会员 发表于 2021-1-21 22:44:57 | 显示全部楼层
我大概看了一下,你的程序逻辑有问题,先启动Login窗口,验证完了返回创建窗口,这块有问题!
推荐先创建主窗口,在主窗口初始化中创建login窗口来处理登录验证,这样会比较简单。
自己先画个流程图吧,一步一步来完成比较稳妥,想一步做一步会导致逻辑太乱!
31_avatar_middle
最佳答案
54 
在线会员 发表于 2021-1-21 22:46:15 | 显示全部楼层
本帖最后由 cpp2019 于 2021-1-21 22:53 编辑
x635775712 发表于 2021-1-16 16:03
你的代码逻辑没看,就是调试了一下。注释掉这个就可以了,
估计是删掉不存在的地址 导致报错,
要验证 ...


这个注释掉就会造成内存泄露,不能解决问题!

另外他这个new出来的不是数组,但却用了delete[],这个似乎也有问题!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-12-4 08:54

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表