c语言c++的内存分配
来源:互联网 发布:浏览器广告拦截软件 编辑:程序博客网 时间:2024/05/17 06:28
c语言和c++的内存分配,静态分配自然不用说,主要是动态分配机制。
用到的函数主要是malloc,new,realloc,主要是三个。
主要讲的是三种函数的不同的使用方法和效果,先说malloc,是c语言的内存分配函数,需要使用强制转换数据类型,而且需要手动计算分配内存的字节(sizeof函数)空间,new是c++的内存分配自制,可以自动识别数据类型,而且能自动计算需要分配的内存,如 int *a = new int,则分配的内存为sizeof(int),如果是int *a= new int [100],则分配sizeof(int*100)的内存空间,这个两个都用于生成新的内存空间,返回的是新生成的内空间的地址指针,
例如采用如下用法,
struct Type *t; //定义Type类型数据
TypeInit(t); //初始化t
而在TypeInit函数中用malloc或者new分配内存空间;
t=(Type *)malloc(sizeof(Type)); //这样的做的结果是对t没有任何影响
可以换成返回Type *的类型函数,再用t=TypeInit(); //这样初始化完全ok.
而realloc是重新分配内存空间,需要手动计算内存空间,既然是重新分配,肯定是已经存在这个指针,例如如下,
int *a=new int[100] ; int *b=NULL;b=a;b=(int *)realloc((int *)b,sizeof(int)*101);if(b==NULL)cout<<"内存分配失败"<<endl;a=b;
添加指针b是免得在重新分配内存空间时,破坏了原有的a的内存空间分配,可以直接使用
a=(int *)realloc((int *)a,sizeof(int)*101);
这样的a指针前面100*sizeof(100)的内容就还是原来的内容,但是如果使用new或者malloc的话就全部都是新的内存。
至于指针的释放就直接使用free或者delete函数就ok了!
如果有人再浏览的过程中发现任何问题,希望能够留言指出,大家共同学习!
- C语言的内存分配
- C语言的内存分配
- c语言的内存分配
- C语言的内存分配
- C语言的内存分配
- C语言的内存分配
- c语言的内存分配
- C语言的内存分配
- C语言内存分配
- C语言内存分配
- c语言内存分配
- C语言-内存分配
- C语言内存分配
- C语言内存分配
- c语言内存分配
- C语言内存分配
- C 语言内存分配
- C语言内存分配
- 特征值和特征向量的几何和物理意义
- 初识压缩感知Compressive Sensing
- Android碰撞检测——Region碰撞检查
- JSP跳转中request共享问题
- ubuntu_文件,目录
- c语言c++的内存分配
- wince软件实现重启待机
- WinCE Network驱动开发简介
- 中英文标点符号的读法用法大全
- 如何修改wince(s3c2410)的MAC地址
- 成为优秀的程序员真不简单
- 是该抛弃Spring HibernateTemplate的时候了
- B. Bets
- android静默安装的实现(turn)