码迷,mamicode.com
首页 > 编程语言 > 详细

C与C++申请动态内存空间的异同

时间:2019-08-11 12:38:40      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:span   动态分配   文件   mes   头文件   理解   pre   使用   free   

C与C++申请动态内存空间的异同

C语言与C++的关系,我们可以这样来形容,C++继承于C语言,却两者都有各自独特的特性,比如在如何申请动态内存空间上有显著的差别。

首先我们要知道,为什么需要动态申请内存空间? 

与动态分配相对应的是静态分配,在计算机中,内存分为栈区和堆区,其中栈区的空间相对于堆区会小很多,可以理解为,自己的家和仓库。

静态分配是在栈区提前分配一个固定大小的空间,而动态分配是需要多少分配多少,需要注意的是,动态分配需要程序员维护内存。

 

说了大致的分别,现在我们来看C语言和C++动态分配内存空间的区别:

下面是C语言动态分配方式的样式代码:

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main(){
 4     int *p;
 5     p = (int*)malloc(sizeof(int));
 6     *p = 4;
 7     printf("%d\n",*p);
 8     free(p);
 9     return 0;
10 }

 

 C语言动态分配内存需要一个名叫malloc() 函数,以及free()函数用来释放内存,这两个函数需要导入头文件"stdlib.h"。

malloc函数默认为void*类型,它的参数为申请空间的大小,malloc函数如果需要返回地址,则需要强转为指定类型,在上面代码中,需与指针p类型相匹配,则用(int*)强转,

free函数释放内存。它的参数为需要释放空间的指针。注意:一定要释放内存,不然会造成空间浪费。

 

下面是C++动态分配内存的样式代码:

 1 #include <iostream>
 2 using namespace std;
 3 int main(){
 4     int *p1  = new int;
 5     *p1 = 4;
 6     cout<<*p1<<endl;
 7     
 8     int *p = new int[3];
 9     p[0] = 1;
10     p[1]=2;
11     p[2] = 3;
12     p[3] = 4;
13     cout<<p[0]<<" "<<p[1]<<" "<<p[2]<<" "<<p[3]<<endl;
14     
15     delete p1;
16     delete []p;
17     return 0;
18 }

 

 C++的动态内存分配不需要导入头文件,它具有new 和delete两个关键字用来行使这个功能,上述代码强调了常量与数组的区别,最大的区别在于释放内存的方式,C++分配内存的方式的优势在于,它不再需要计算数据类型的大小,也就是不需要再使用sizeof函数,相对来说,要方便一些。

 

好了,以上就是今天所说的,C语言与C++之间动态分配内存方式的分别,希望对大家有一点点帮助。

如有错误,请指出,一定加以改正。

C与C++申请动态内存空间的异同

标签:span   动态分配   文件   mes   头文件   理解   pre   使用   free   

原文地址:https://www.cnblogs.com/whtmomo/p/11334494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!