C++ MFC Fail to create empty document

导致这个错误的原因具体有很多种表现,我最近遇到的一种情况是,在主窗口的构造函数里,其中有一个初始化函数里面有一个CList列表容器越界或空值,导致构造函数初始化失败,就跳了这个错误。
如下图所示
CBoxChannelWnd是构造函数,程序开始跑的时候会先调用这个来给诸多必要的变量初始化,CKafka::Instance()->InitConfData()是其中一个需要调用的初始化函数。
在这里插入图片描述
这个错误就是出现在InitConfData()里,如下是错误代码,是m_csIPArr和m_csPortArr这两个CList容器,一开始是空值,但是m_iIndexIp不为空,可能造成了访问越界,导致奔溃,然后窗口构造函数调用失败便跳出Fail to create empty document!

strTemp = m_csIPArr[m_iIndexIp] + _T(":") + m_csPortArr[m_iIndexIp];

		m_strBrokerListData = (CStringA)strTemp.GetBuffer();

		m_iIndexIp++;
		if (m_iIndexIp >= m_iIPCount)
		{
			m_iIndexIp = 0;
		}

正确的代码是做了限制空列表访问控制的,如下操作,很简单,加了个if语句而已

	if (m_csIPArr.GetSize() > 0 && m_csPortArr.GetSize() > 0)
	{
		strTemp = m_csIPArr[m_iIndexIp] + _T(":") + m_csPortArr[m_iIndexIp];

		m_strBrokerListData = (CStringA)strTemp.GetBuffer();

		m_iIndexIp++;
		if (m_iIndexIp >= m_iIPCount)
		{
			m_iIndexIp = 0;
		}
	}

C++地址控制意识还是要提高呀兄弟,希望对你有用^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值