指针作为返回值

来源:互联网 发布:手机淘宝帐号注册流程 编辑:程序博客网 时间:2024/05/01 12:18

1、当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72。此时需要我们注意的是该地址值所指向的空间是否存在(即已向操作系统声明注册,不会被释放,即可能被其他操作修改);
2、使用栈内存返回指针是明显错误的,因为栈内存将在调用结束后自动释放,从而主函数使用该地址空间将很危险。
例如:

char* GetMemory(){    char p[] = "hi";    return p;}void main(){    char *str = GetMemory();           //出错! 得到一块已释放的内存    printf(str);}

3、使用堆内存返回指针是正确的,但是注意可能产生内存泄露问题,在使用完毕后主函数中释放该段内存。
例如:

char* GetMemory(){    char *p = new char[100];    return p;}void main(){    char *str = GetMemory();    delete [] str;       //防止内存泄露!}
1 0
原创粉丝点击