C:返回值为指针的函数解读
一、先看看下面的小程序:
运行结果:
运行结果与预期相符,但此程序却是一个有问题的程序,stTmpInfo是一个定义在函数GetStaffNameById中的临时变量,调用完此程序,它即被销毁,所以main函数中,pName所指对象的值是不确定的,在没被覆盖前,正确( 像此程序),但若被其他的函数调用覆盖,谁也不知道其值是什么。
二、如何改进?
方法有以下四种,推荐使用方法三。
1、将stTmpInfo定义为全局变量,如下
2、程序内部将stTmpInfo定义为static,如下:
3、修改接口,通过出参取回。
4、通过子程序分配内存,调用者释放解决。
不积跬步,无以至千里;不积小流,无以成江海。