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; }
运行结果:
本博文由Leon Zhang原创,若转载,请注明出处。