//程序作者:管寧
//站點: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();
}