当前位置: 首页 > news >正文

【原】函数返回一个指针以及返回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,如需转载请自行联系原作者

相关文章:

  • RemoteFX 认证终端设备
  • Android 6.0 RecyclerView嵌套在ScrollView中显示不全
  • 简单实现并发:python concurrent模块
  • SCCM 2007 R2 setp by setp(十)-SCCM客户端部署之客户端推送安装
  • @angular/cli项目构建--http(2)
  • 利用ansible-cmdb统计主机配置信息并以web页面展出来
  • 学习JAVA自我总结
  • 201621123075作业10-异常
  • 深入Atlas系列:Web Sevices Access in Atlas(7) - RTM中的客户端支持
  • tomcat7配合redis实现session共享
  • KeyPass密码管理软件使用说明
  • 禁止一个指定的程序运行
  • Linux 系统如何在开机时修改root密码
  • 论秋招中的排序(排序法汇总-------上篇)
  • Anaconda 安装tensorflow(GPU)
  • @angular/forms 源码解析之双向绑定
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【剑指offer】让抽象问题具体化
  • Android单元测试 - 几个重要问题
  • Angular6错误 Service: No provider for Renderer2
  • FineReport中如何实现自动滚屏效果
  • Git的一些常用操作
  • HTML中设置input等文本框为不可操作
  • Otto开发初探——微服务依赖管理新利器
  • React-Native - 收藏集 - 掘金
  • ucore操作系统实验笔记 - 重新理解中断
  • 创建一个Struts2项目maven 方式
  • 构造函数(constructor)与原型链(prototype)关系
  • 算法---两个栈实现一个队列
  • 算法之不定期更新(一)(2018-04-12)
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • NLPIR智能语义技术让大数据挖掘更简单
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $forceUpdate()函数
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (分布式缓存)Redis哨兵
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (五)MySQL的备份及恢复
  • (循环依赖问题)学习spring的第九天
  • (一)认识微服务
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)项目管理杂谈-我所期望的新人
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • [Android]常见的数据传递方式
  • [C++打怪升级]--学习总目录
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk --不会编程的崽
  • [idea]关于idea开发乱码的配置
  • [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句
  • [JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏