【原】函数返回一个指针以及返回STL对象的问题

简介:
1. 关于某函数返回指针问题:
复制代码
1 int *func(int a[])
2 {
3      int * b = a;
4      return b;//指针b并没有被释放
5 }
6  
7 int *c = func(array);
复制代码

 

看上面的这个例子,指针b在函数func内没有被释放。在IOS里面,一般的措施是 return [b autorelease]; 编译器会自动跟踪b对象的使用情况,自动释放。但在c/c++里面是没有autorelease机制的。那怎么办呢?我们要明确一个问题,在上面的例子中,是肯定会发生内存泄露的。处理的方法是, 在调用的地方,对接收者进行释放,即在使用完c指针后,对c进行释放:
 
delete c; 
 
 
2. 函数返回vector对象的问题:
vector< int > func( void )
{
      vector< int > value;
      return  value;
}

  

以上这样表达是可以的,虽然在func函数内部,value只是一个局部对象,但是在返回的时候,在碰到return把value临时对象销毁前, 系统会调用vector的拷贝构造函数,对vector的所有元素拷贝一份,生成临时对象,传给外部。所以说,这种方法 只适用于vector比较小的情况。对于vector比较大的情况,应该把vector的引用作为形参传给函数,无返回值:
void func(vector<int> & value)
{
     ...
}
本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2013/03/27/2985298.html,如需转载请自行联系原作者
相关文章
|
16天前
|
搜索推荐 C语言 C++
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现3
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现
|
22天前
|
存储 编译器 C语言
【c++】类和对象(二)this指针
朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针
【c++】类和对象(二)this指针
|
24天前
|
安全 C语言 C++
字符指针做函数参数
字符指针做函数参数
9 1
|
28天前
|
安全 C语言
字符指针作函数参数的深入探索
在C语言编程中,字符指针是一个重要的概念,尤其在处理字符串和文本数据时。当我们将字符指针作为函数参数时,可以实现多种灵活和高效的操作。本文将深入探讨字符指针作为函数参数的应用,并通过代码示例加以说明。
13 1
|
1月前
|
存储 Shell C语言
指针数组组main函数的形参
指针数组组main函数的形参
10 0
|
1月前
|
C语言 C++
指针变量作为函数参数
指针变量作为函数参数
8 1
|
1月前
|
存储 Serverless 编译器
怎样定义和使用指向函数的指针变量
怎样定义和使用指向函数的指针变量
8 0
|
1月前
|
C++
用指向指针函数作函数参数
用指向指针函数作函数参数
8 1
|
1月前
|
存储 C语言 C++
什么是函数的指针
什么是函数的指针
8 0
|
1月前
|
存储 C语言
c语言函数指针和指针函数的区别,以及回调函数的使用。
c语言函数指针和指针函数的区别,以及回调函数的使用。
9 0

热门文章

最新文章