C:返回值为指针的函数解读

一、先看看下面的小程序:


运行结果:


  运行结果与预期相符,但此程序却是一个有问题的程序,stTmpInfo是一个定义在函数GetStaffNameById中的临时变量,调用完此程序,它即被销毁,所以main函数中,pName所指对象的值是不确定的,在没被覆盖前,正确( 像此程序),但若被其他的函数调用覆盖,谁也不知道其值是什么。


二、如何改进?

  方法有以下四种,推荐使用方法三。

  1、将stTmpInfo定义为全局变量,如下


2、程序内部将stTmpInfo定义为static,如下:


3、修改接口,通过出参取回。


4、通过子程序分配内存,调用者释放解决。



posted @ 2012-05-13 13:44  Socrates  阅读(492)  评论(0编辑  收藏  举报