今天一大早起来,朋友就给我发给了下面一个题目,要我解释下,答案我是想出来了,可是就是解释不清楚。。。
首先要解决这个问题就必须了解程序在内存的分配:
关于堆与栈的
栈(stack):是自动分配变量,以及函数调用所使用的一些空间(所谓的局部变量),地址由高向低减少;
堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长。
自己所编写的代码:
#include <iostream>
using namespace std;
void main()
{
int a;
int b;
int *p1;
int *p2;
cout < <&a < <endl < <&b < <endl < <&p1 < <endl < <&p2 < <endl < <endl;
//结果显示:0012FF7C,0012FF78,0012FF74,0012FF70;可见,栈中的地址是减少的
int *p3=new int[1];
int *p4=new int[1];
cout < <p3 < <endl < <p4 < <endl;
//结果显示:003907A8,003907E0;可见,堆中地址是增加的
}
有一点应该注意:频繁使用heap