国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

c++中關于堆內存(heap)的概念和操作方法的教程

2019-11-17 05:30:27
字體:
來源:轉載
供稿:網友

  堆內存是什么呢?

我們知道在c/c++中定義的數組大小必需要事先定義好,他們通常是分配在靜態內存空間或者是在棧內存空間內的,但是在實際工作中,我們有時候卻需要動態的為數組分配大小,在這里c庫中的malloc.h頭文件中的malloc()函數就為您解決了問題,(bc或者是在老的標準中是alloc.h),它的函數原形是void* malloc(size_t size),在動態開辟的內存中,在使用完后我們要使用free()函數來釋放動態開辟的內存空間!

下面我們來看一個完整的例子!


//程序作者:管寧
//站點:www.cndev-lab.com
//所有稿件均有版權,如要轉載,請務必聞名出處和作者

#include <iostream>
#include <malloc.h>

using namespace std;
main()
{
int arraysize; //元素個數
int *array; //用于動態開辟數組的指針變量

cin>>arraysize;
array=(int*)malloc(arraysize * sizeof(int));//利用malloc在堆內存中開辟內存空間,它的大小是元素的個數乘以該數據類型的長度

for(int i=0;i<arraysize;i++)
{
array[i]=i;
}

for(int i=0;i<arraysize;i++)
{
cout<<array[i]<<",";
}
cout<<endl;
free(array);//利用free釋放動態開辟的堆內存空間
cin.get();
cin.get();
}


這里要非凡注重個地方就是:

array=(int*)malloc(arraysize * sizeof(int));


malloc()的函數原形本身是void* malloc(size_t size),由于動態分配的空間計算機并不知道是用來做什么的所以是無類型的,但你要把它用在動態的整形數組上的時候就要顯式的轉換成int*了! 下面我們再介紹c++所獨有的開辟和釋放堆內存空間的方法,new修飾符和delete修飾符.

new和delete修飾符的操作并不需要頭文件的支持,這是c++所獨有的,new操作要比malloc更為簡單,直接說明開辟的類型的數目就可以了,delete使用的時候假如是數組那么必須使用delete[].


//程序作者:管寧
//站點:www.cndev-lab.com
//所有稿件均有版權,如要轉載,請務必聞名出處和作者

#include <iostream>

using namespace std;
main()
{
int arraysize; //元素個數
int *array;

cin>>arraysize;

array=new int[arraysize];//開辟堆內存

for(int i=0;i<arraysize;i++)
{
array[i]=i;
}

for(int i=0;i<arraysize;i++)
{
cout<<array[i]<<",";
}
cout<<endl;
delete[] array;//釋放堆內存
cin.get();
cin.get();
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊川县| 中山市| 晋州市| 衢州市| 合江县| 西华县| 镇平县| 英德市| 枣阳市| 奉新县| 锡林郭勒盟| 阳江市| 温宿县| 临汾市| 塔城市| 德清县| 东安县| 灯塔市| 洪泽县| 慈利县| 双桥区| 虞城县| 屏东市| 紫阳县| 六盘水市| 城口县| 沁阳市| 宁城县| 静宁县| 怀化市| 东莞市| 昆明市| 始兴县| 南木林县| 上饶市| 鄂托克旗| 崇信县| 尖扎县| 梅河口市| 宁陕县| 彰化市|