完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
fn() { u8 buf[512]; …… } main() { u8 buf[1024]; fn(); // 执行到fn内部被中断入栈1536字节 …… // 入栈1024字节 } 问: 1024字节的局部数组在任意时候都会占据1024字节的栈区吗 ? |
|
相关推荐
13个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
邀请回答
您宣告就會佔用了,但在51會有比較特殊的Memory management,叫做data overlaying 所以實際上是會重疊在一起但不會影響使用,這編譯器會為您做好這件事,可參考以下說明 所謂 data overlaying 是指沒有呼叫關係的函數,它們的區域變數區可以重疊在一起(共用一塊記憶體)。Keil C51 會分析程式中函數間呼叫的關係,產生一個呼叫樹。它就根據這個呼叫樹來決定那些函數的區域變數區可以 overlaying 在一起。 以上供參考 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
云汉达人 邀请回答
这用法我也是醉了,aaa bbb这样的名字多好。 这个局部buf,你看他是个名字跟main函数的buf一样的数组。在电脑眼里却只是个地址,而且此buf的地址不是彼buf的地址。 人类的思维可能不好理解。但是对电脑来说很简单。虽然变量名一样了,但一个只是在函数里面局部的,在它眼里,这是两个不同的地址。 fn函数的局部buf,按你给的代码就是512个u8类型。 当进入fn这个函数的时候,会用掉512个u8,执行完就释放了。 word天啊,我的大脑已经短路了。 为什么不是u8 aaa[512]啊!!! 为什么不是u8 aaa[512]啊!!! 为什么不是u8 aaa[512]啊!!! 为什么不是u8 aaa[512]啊!!! |
|
|
|
|
|
主函数中宣告的在任何时候都会占用的
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1018 浏览 1 评论
1849 浏览 0 评论
1830 浏览 1 评论
3254 浏览 5 评论
3581 浏览 9 评论
1021浏览 1评论
1850浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1360浏览 1评论
1852浏览 0评论
1178浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:26 , Processed in 0.892067 second(s), Total 98, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
7034