C++入门经典-例5.11-动态分配空间,堆与栈

1:在程序中定义一个变量,它的值会被放入内存中。如果没有申请动态分配,它的值将会被放在栈中。栈中的变量所属的内存大小是无法被改变的,它们的产生与消亡也与变量定义的位置和存储方式有关。堆是一种与栈相对应的动态分配方式的内存。当我们申请使用动态分配方式存储某个变量时,这个变量就会被放入堆中。根据需要,这个变量的内存大小可以发生改变。

2:在创建变量之前,编译器并没有获取到变量的名称,而只是具有指向该变量的指针。这时申请变量的堆内存即申请自身指向堆。new是C++语言中申请动态内存的关键字,形式如下:

int* pI=new int;

    这样,pI指针就申请了动态方式,使用它在堆内申请内存存储in类型的值。

    具体例子代码如下:

// 5.11.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
    int* pI1 = NULL;
    pI1 = new int;//申请动态分配
    *pI1 = 111;//动态分配的内存储存的内容变成111的整型变量
    cout<<"pI内存的内容"<<*pI1<<",pI所指向的地址"<<pI1<<endl;
    int* pI2;
    //*pI2 = 222;  //直接赋值会导致错误!!!
    int k ;//栈中的变量
    pI2 = &k; //分配栈内存
    *pI2 = 222;//分配内存后方可赋值
    cout<<"pI内存的内容"<<*pI2<<",pI所指向的地址"<<pI2<<endl;
    return 0;
}
View Code

运行结果:

原文地址:https://www.cnblogs.com/lovemi93/p/7524700.html