请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

栈和堆的内存地址问题

老师您好:我又来了
您之前提到,c里面,数组在函数调用栈,然后这个链表是 堆里面。
想请教一下:
栈的内存地址范围是从0x多少到0x多少,堆内存地址范围是从0x多少到0x多少,
这个能怎么知道吗,如果能知道这些的话,就能验证和判别,我的数据是在堆还是栈,可以自我验证,查了一下说是c++有VirtualQuery啥的(c++还没学过)

如果可以的话,还想请教一下java的话,有什么办法能够看、验证一个数据是在堆还是栈,Idea貌似没有Compile explorer那个看地址的,

元旦快乐,万分感激

正在回答

1回答

bennyhuo 2021-01-01 23:13:41

地址范围跟编译器关系很大。

Java只要是new出来东西都在堆上。

0 回复 有任何疑惑可以回复我~
  • 提问者 十三山入秋 #1
    哦哦,我再看看
    回复 有任何疑惑可以回复我~ 2021-01-01 23:39:01
  • 提问者 十三山入秋 #2
    老师您好:
    百度搜到这样一句话:
    生长方向:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,他的生长方向是向下的,是向着内存地址减小的方向增长。
    我试了一下声明两个数组,还真是,但是为什么会这样呢
    回复 有任何疑惑可以回复我~ 2021-01-02 00:10:48
  • bennyhuo 回复 提问者 十三山入秋 #3
    这个跟编译器的实现和操作系统进程的地址空间有关系了。
    回复 有任何疑惑可以回复我~ 2021-01-02 06:38:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信