Windows Mobile MFC 对话框程序开发记录(1)

以前一直做基于API的应用开发,最近用MFC Dialog做了几个项目,在此记录一下过程,以备后用。

1、关于异常处理

微软提供了一个异常捕捉结构,

__try

{

//TODO:

}

__except(EXCEPTION_EXECUTE_HANDLER)

__finally()

{

}

此异常处理结构能够处理C++异常之外的系统异常,比如IO、内存操作等等。此异常结构中不能创建对象实例,否则编译不通过,但是可以把创建对象实例的代码放在一个函数中,然后对该函数使用此结构是可以的。C++异常用try{}catch(){}结构捕捉。

需要注意的是finally中的部分是一定会执行的,比如在try中使用return语句返回,但是还是会执行finally中的语句。

2、关于函数返回值问题

函数返回值分为两种,一种是值类型,一种是指针类型,传递值类型时是将函数内部产生的值拷贝给调用者,传递指针类型时只是将函数内部内存地址拷贝给调用者,但是该地址指向的内存在函数返回后是否有效,则分两种情况。情况一,该指针指向的内存属于函数局部内存,则在函数返回后该内存无效,很可能立即被分配给别的变量使用,这样一来在调用函数中访问返回的指针指向的内容,获取的内容很可能不正确;情况二,该指针指向的内存属于函数外部,比如说类的成员变量、全局变量等,此时在调用函数中访问返回的指针指向的内容时,根据内存的作用范围又有所不同,举例如下:

返回值的函数,int func(){ int a= 0; return a;}此时返回的a即使是局部变量,也能正确将其代表的值返回给调用者。

返回指针的函数, LPTSTR func(){ TCHAR szStr[100] = {0}; return szStr}此种情况下,返回的只是指向szStr的地址,但是函数返回后,该地址中的内容已经不可用,调用这时候用时很可能发生意想不到的错误,导致运行时错误,但是如果szStr放在函数外面,并且对调用者和该函数都有效的话, 则不存在这问题。

3、new出来的内存必须初始化,否则的话里面会存在很多乱码。

4、成员变量应该被初始化,尤其是指针类型的,更需要初始化。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值