手机
堆内存
摘要:

堆内存可以动态分配所需的内存空间大小,而数组必须要在程序运行前指定空间大小,下面我们来看一个练习;

1、启动 Geany

1)点菜单“应用程序-编程-Geany”启动 Geany ,新建一个 c++ 源程序;

2)点菜单“文件-另存为”命令,以“heap”为文件名,保存文件到自己的文件夹;

2、分配堆内存

1)使用 new 操作符来获得需要的内存大小,它返回指定类型的内存空间指针,

接着输入下面的代码,准备要用到的变量,第三个是指针变量,存放将来内存地址:

int i = 0;

int a = 0;

int *score = NULL;

2)接下来输入一个数给 a,指定要申请的内存空间大小;

cout << "Input a number: ";

cin >> a;

3)接下来按整型 int 申请内存大小,如果成功了,就把地址给 score 指针变量,否则给它的是“空” NULL;

score = new int [a];

4)如果 score 不为空,就给它的各个单元赋值 i ,内存一般是连续的,可以当数组来使用;

for (int i=0; i<a; i++)

{

score[i] = i;

}

5)赋值完毕以后,再显示一下各个单元的值;

cout << "score[" << a << "] = ";

for (int i=0; i<a; i++)

{

cout << score[i] << " ";

}

6)使用完毕后,归还申请的内存,释放内存后,score 指针也应该让指向空 NULL;

free(score);

score = NULL;

7)编译、生成、运行后,显示分配的内存单元和值;

#include <iostream>

using namespace std;

int main(int argc, char** argv)

{

int a = 0;

int *score = NULL;

cout << "Input a number: ";

cin >> a;

score = new int [a];

if (score != NULL)

{

for (int i=0; i<a; i++)

{

score[i] = i;

}

cout << "score[" << a << "] = ";

for (int i=0; i<a; i++)

{

cout << score[i] << " ";

}

delete[] score;

score = NULL;

}

return 0;

}

本节学习了堆内存使用的基本操作,如果你成功地完成了练习,请继续学习;

上一篇: 引用
精品推荐
分类导航