首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关栈和堆的有关问题

2012-02-26 
有关栈和堆的问题看到资料上说栈是由高地址向低地址增长,堆是由低地址向高地址增长。可是为什么下面的程序

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

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

热点排行