C++中的动态空间扩充方法
由于C++中没有C语言中的realloc的函数,对存储空间的动态增长的再分配,就此写一个模板进行替代之:
template<typename T> T* realloc( T* &p, size_t oldsize, size_t newsize ) { if ( oldsize > newsize ) { return NULL; } T* tmpmemery=new T[newsize]; memset( tmpmemery, 0, newsize ); memcpy( tmpmemery, p, oldsize*sizeof(T) ); delete []p; return p = tmpmemery; } int main() { int* p = new int[128]; for( int i=0; i < 128; i++ ) p[i] = i; realloc( p, 128, 256 ); delete []p; return 0; }
代码本身没有什么,关键是思路:
首先、判断要申请的空间是否比原来的大;
然后、用new申请一个更大的内存空间,并将其置空;
接着、将原来指向的内存空间的内容进行拷贝到新申请的空间;
最后、将原来的空间进行释放,原来的指针指向新申请的空间,返回即可。
C++中的动态空间扩充方法相关推荐
- php动态写入vue,Vue.js中使用动态组件的方法
本文介绍了如何在Vue.js中引用组件中的HTML元素.您可以通过使用Vue路由器或创建动态组件来切换视图或组件模板. Vue路由器用于在DOM中的视图或组件模板之间导航.要使用Vue路由器,请在ro ...
- 第6章 Python中的动态可执行方法 第6.1节 Python代码编译
在介绍动态可执行方法前,本节先介绍一下Python代码编译有关的知识,因为部分内容和动态执行有些关联. 一. Python解释器的功能 Python虽然是解释型语言,但Python代码也是可编译 ...
- java中显示动态信息的方法_java里的动态表单技术
最近的一个项目,由于客户的需求等信息不确定,为了降低以后修改的成本及产品的推广考虑到动态表单技术,之前也一直在考虑到动态表单技术,毕竟在delphi里已经实现过了,由于我们采用的hibernate的执 ...
- 无需安装任何软件即可在个人电脑中创建隐私空间的方法
按照以下方法操作能够实现在电脑硬盘或U盘中创建一个保密空间,不需要安装任何软件,可以随时打开或隐藏,非常方便. 步骤: 1.在个人电脑中建立一个txt文档: 2.打开txt,拷贝以下代码放入文档中保存 ...
- C++中的开辟/释放动态空间new/delete
在C语言中用于开辟/释放动态空间的关键词是malloc/free,该种开辟空间的方法在C++中,也适用,但除此之外C++还提供了另外一种开辟/释放动态空间的关键词new/delete.对于用mallo ...
- ORACLE12C 创建表空间的方法
在oracle 数据库中,表空间是最大的概念,与用户独立,创建一个表空间,所有用户可以共用.接下来,讲解在oracle 12c 数据库中创建表空间的方法,在oracle 12c 数据库中,默认表空间有 ...
- C# 在PDF中绘制动态图章
我们知道,动态图章,因图章中的时间.日期可以动态的生成,因而具有较强的时效性.在本篇文章中将介绍通过C#编程在PDF中绘制动态图章的方法,该方法可自动获取当前系统登录用户名.日期及时间信息并生成图章. ...
- 在静态SQL中实现动态WHERE子句
目录 介绍 实现动态WHERE-Clause 使用COALESCE 使用ISNULL 使用CASE 替代方案 结论 本文介绍了在静态SQL中实现动态WHERE-Clause的不同方法. 下载演示SQL ...
- 如何录制gif动态图片并在CSDN中插入动态图片
我们在网上浏览别人的博客时,经常可以看到以gif动态图显示的程序效果演示和代码段,那么如何录制gif动态图片并在CSDN中插入动态图片呢? 下面介绍一种简单的方法,了解之后,你也可以将其 ...
最新文章
- gRPC 网关,针对 HTTP 2.0 长连接性能优化,提升吞吐量
- MLNLP顶会论文发表总榜:谷歌最狂,清北入前十,周明、张岳、刘挺华人前三...
- 计算机 二进制 中国,二进制与计算机
- iOS实现自定义的弹出视图(popView)
- 回溯算法--8皇后问题
- curl查看swift状态命令_前端应该会的23个linux常用命令
- uva 11992 Fast Matrix Operations
- VCL组件之重要的公用属性
- 这些C4D创意卡通色彩场景,简直酷到爆炸!
- 笔记︱利用python + flask制作一个简易本地restful API
- 基于SSM的家庭理财系统
- android程序无法安装,安卓手机安装不了软件怎么办 手机无法安装软件原因和方法...
- mega linux教程,LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程
- 网络常用端口号(全)
- matlab神经网络工具箱
- 模电数电高频电路综合实验成套设备QY-MS535G
- 已知二叉树的前序序列跟中序序列求后序序列(C语言)
- Web—13-判断网站请求来自手机还是pc浏览器
- 花生壳域名穿透 网站无法访问
- 云服务器与实体服务器性能,实体服务器和云服务器 的利与弊