当前位置: 技术问答>linux和unix
关于内存分配
来源: 互联网 发布时间:2015-07-03
本文导语: 用malloc分配了一块内存,获得该内存的起始地址为addr1=0x40007008 然后调用sbrk(0)获得堆顶的地址为:addr2=0x8053580。 由于动态内存在堆里分配,所以addr1应该小于addr2。 但是显然程序运行的结果是addr1>addr2! 这是怎...
用malloc分配了一块内存,获得该内存的起始地址为addr1=0x40007008
然后调用sbrk(0)获得堆顶的地址为:addr2=0x8053580。
由于动态内存在堆里分配,所以addr1应该小于addr2。
但是显然程序运行的结果是addr1>addr2!
这是怎么回事呀?
然后调用sbrk(0)获得堆顶的地址为:addr2=0x8053580。
由于动态内存在堆里分配,所以addr1应该小于addr2。
但是显然程序运行的结果是addr1>addr2!
这是怎么回事呀?
|
addr1=0x40007008是怎么来的?
怎么感觉像是动态链接库的映射地址?
怎么感觉像是动态链接库的映射地址?
|
mark!
|
我个人认为不能这么说,要看操作系统的具体实现吧,单对一个堆或者栈来说你说的是成立的