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

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

新手入門:C++中堆內存(heap)的概念和操作方法

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

  堆內存是什么呢?

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

  下面我們來看一個完整的例子:#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[]。#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(); 
}   更多文章 更多內容請看C/C++技術學堂  C/C++技術專題  C/C++進階技術文檔專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海南省| 奈曼旗| 霍林郭勒市| 莒南县| 仙游县| 禄劝| 康定县| 金乡县| 武威市| 卢湾区| 柘城县| 武清区| 长武县| 张家港市| 安仁县| 栖霞市| 木兰县| 专栏| 兴宁市| 上犹县| 瓦房店市| 耿马| 九寨沟县| 阿合奇县| 伊金霍洛旗| 吉林市| 金华市| 志丹县| 刚察县| 巩留县| 遂川县| 雷波县| 宁河县| 前郭尔| 万山特区| 共和县| 怀来县| 曲麻莱县| 资中县| 清徐县| 天全县|