堆内存

1、堆是内存空间。堆是区别于栈区、全局数据区和代码区的另一个内存区域。堆运行程序在运行时(而不是编译时),申请某个大小的内存空间。

2、获得堆内存

函数malloc()是C程序获得堆内存的一个方法,在alloc.h的头文件中声明。该函数从堆内存中"切下"一块size(运行时决定的)大小的内存,并将指向该内存的地址返回。

3、示例代码

#include<iostream.h>
#include<alloc.h> 
int main(){
int arraysize;//元素个数
int *array;
cout<<"please input a number of array elements:\n";
cin>>arraysize;
//下列代码是防止堆内存用光情况发生 
if((array=(int*)malloc(arraysize * sizeof(int)))==NULL){
cout<<"can't allocare more memory,terminating.\n";
exit(1);
} 
for(int count=0;count<arraysize;count++){
array[count]=count*2; 
}
for(int count=0;count<arraysize;count++)
cout<<array[count]<<" ";

cout<<endl;
free(array);//释放堆内存 
}

 

 

4、new和delete

new和delete是C++专有的操作符,他们不用头文件声明。new类似于函数malloc(),分配堆内存,但比malloc()更简练。

new的操作数为数据类型,它可以带初始化值表或者单元个数。new返回一个具有操作数值数据类型的指针。

new和delete在性能略逊于函数malloc()和free(),但更安全并具有更丰富的功能。

posted on 2015-07-29 15:32  糖客  阅读(199)  评论(0编辑  收藏  举报

导航