基于C++函数模板实现堆栈切换的一种方法
2021/6/10 20:22:52
本文主要是介绍基于C++函数模板实现堆栈切换的一种方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
//描述: 堆内存申请 //参数:@stack 栈内存 // @heap 堆内存 //返回:成功返回true,反之为false template <typename T, WORD wMaxNum> bool MgrMemNew(bool &fUseHeap, WORD wCurNum, T (&stack)[wMaxNum], T **heap) { if (wCurNum > wMaxNum) { *heap = new T[wCurNum]; if (*heap == nullptr) { printf("MgrMemNew(): new failed! Type=%s\n", typeid(stack).name()); return false; } memset((BYTE*)*heap, 0, sizeof(T)*wCurNum); fUseHeap = true; } else { *heap = stack; memset((BYTE*)*heap, 0, sizeof(T)*wMaxNum); fUseHeap = false; } return true; } //描述:堆内存释放 //参数:@fUsageHeap 栈内存标识 // @heap 需释放的栈内存 //返回:无 template <typename T> void MgrMemDel(bool &fUseHeap, T *heap) { if (fUseHeap) { delete[] heap; heap = nullptr; fUseHeap = false; } }
typedef struct { WORD wNum; int iArray[8]; bool fHeap; int *piArray; }TStackHeap; TStackHeap stackHeap = { 0 }; stackHeap.wNum = 7; MgrMemNew(stackHeap.fHeap, stackHeap.wNum, stackHeap.iArray, &stackHeap.piArray); MgrMemDel(stackHeap.fHeap, stackHeap.piArray);
这篇关于基于C++函数模板实现堆栈切换的一种方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解
- 2024-12-20利用Gemini构建处理各种PDF文档的Document AI管道