c – 使用**或*&为函数中的参数分配内存
发布时间:2020-12-16 10:02:13 所属栏目:百科 来源:网络整理
导读:我已经看到了两种不同的解决方案,如何为函数中的参数分配内存: 使用**: template class Tvoid funcPP(T ** ppnDynamicInt) { *ppnDynamicInt = new T;} VS 使用* template class Tvoid funcRP(T * pnDynamicInt) { pnDynamicInt = new T;} 使用函数的示例
我已经看到了两种不同的解决方案,如何为函数中的参数分配内存:
使用**: template <class T> void funcPP(T ** ppnDynamicInt) { *ppnDynamicInt = new T; } VS 使用*& template <class T> void funcRP(T *& pnDynamicInt) { pnDynamicInt = new T; } 使用函数的示例 – > int * pnDynamicInt; funcPP(&pnDynamicInt); funcRP(pnDynamicInt);//memory leak I know ;) 什么被认为是更安全/更好的风格?一种解决方案更有效吗? (注意:我知道智能指针会更好:)) 解决方法
由于您只考虑显示的两种替代方案,
我建议使用funcRP,因为语言保证pnDynamicInt永远不为null(引用不能为null)但是* ppnDynamicInt = new T;如果ppnDynamicInt是空指针,则可能导致未定义的行为.除此之外它们是相同的(除了funcRP使用更整洁的语法) 注意:根据您使用函数的方式,您可能希望删除以前的值,例如使用delete pnDynamicInt. 编辑:通过’保证’,我的意思是没有非未定义的方式具有空引用,而空指针是明确定义的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Qt之正则表达式
- 如何在iPhone应用程序上仅支持纵向模式
- xmlDOM解析示例
- c# – .NET未检测到任何SQL Server实例
- ruby-on-rails – 如何访问app / assets / *文件中的控制器
- 请推荐一个或多个最好的图表组件,Flash或javascript
- Oracle Oracle数据库常用命令、Linux监听配置、oracle linu
- Oracle PL-SQL Developer集成TFS进行团队脚本文件版本管理
- 具体分析applicationContext.xml和spring3-servlet.xml
- Oracle优化07-分析及动态采样-DBMS_STATS 包