不要返回指向局部变量的指针
2006-02-21 14:39
267 查看
有两种情况,函数会返回指向局部变量的指针:
返回由malloc动态分配的内存指针。这种情况是合法的,但它假设调用者会释放动态分配的内存。在这种情况下通常会有另一个函数提供释放内存的功能。
返回指向局部变量的指针。局部变量占用的内存会在函数返回时被系统自动回收,因此系统可以随时将其它数据写入这块内存。在这种情况下函数可以编译通过,但不能保证运行正确。
这种函数通常可以被改造如下:
把返回的指针加到参数列表里
加一个指示长度的参数,或者假设指针指向的数据以null结尾
修改返回指针指向的数据
函数或者不返回值,或者返回一个bool值表示成功/失败
调用者负责内存分配,通常情况下只是声明一个普通的变量。例如:
char chArray[10];
bool bTest = MyFunction(chArray, 10);
参考地址:http://www.openismus.com/documents/cplusplus/cpointers.shtml
返回由malloc动态分配的内存指针。这种情况是合法的,但它假设调用者会释放动态分配的内存。在这种情况下通常会有另一个函数提供释放内存的功能。
返回指向局部变量的指针。局部变量占用的内存会在函数返回时被系统自动回收,因此系统可以随时将其它数据写入这块内存。在这种情况下函数可以编译通过,但不能保证运行正确。
这种函数通常可以被改造如下:
把返回的指针加到参数列表里
加一个指示长度的参数,或者假设指针指向的数据以null结尾
修改返回指针指向的数据
函数或者不返回值,或者返回一个bool值表示成功/失败
调用者负责内存分配,通常情况下只是声明一个普通的变量。例如:
char chArray[10];
bool bTest = MyFunction(chArray, 10);
参考地址:http://www.openismus.com/documents/cplusplus/cpointers.shtml
相关文章推荐
- 返回指向局部变量指针的函数 与 返回局部变量引用的函数
- effective C++笔记之条款31、32: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针所指对象的引用、尽可能地推迟变量的定义
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 返回指向局部变量的指针或引用
- 返回指向局部变量的指针或引用
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 返回指向局部变量的指针或引用的问题
- C/C++ 子函数返回局部变量、指针 和改变指针指向
- 返回局部变量、局部变量的引用和指向局部变量的指针
- 返回指向局部变量的指针或引用的带来的问题讨论
- 返回指向局部变量的指针或引用的带来的问题讨论
- 返回指向局部变量的指针或引用的带来的问题讨论
- 关于返回局部变量的指针或引用
- 函数不能返回局部指针变量
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 指向临时变量的指针的返回
- C++函数返回局部变量指针的问题
- 不要用return 返回指向栈内存的指针
- effective c++ ------不要返回指向局部对象指针或引用,该返回对象就返回对象.
- 不要返回局部数组的指针!