读书人

有关栈和堆的有关问题

发布时间: 2012-02-26 20:19:44 作者: rapoo

有关栈和堆的问题
看到资料上说栈是由高地址向低地址增长,堆是由低地址向高地址增长。
可是为什么下面的程序输出却不符合“堆是由低地址向高地址增长”啊?问题处在哪里?请高手指教。
int *p1=new int[5];
int *p2=new int[10];
cout < <p1 < <endl;
cout < <p2 < <endl;
delete [] p1;
delete [] p2;

[解决办法]
貌似楼主把概念搞混淆了。“堆是由低地址向高地址增长”的意思并不是说内存是从低到高分配的!内存分配有其自己的算法,并不一定后分配的内存地址就比以前分配的地址大。(当然大多数情况是这样)比如经过多次的内存分配和释放之后,后面在分配的内存地址可能就在前面。你的例子只能说明内存分配的一些情况,和地址增长方向没有关系。
总之内存分配和地址增长方向是两码事。

读书人网 >C++

热点推荐