我可能太好奇或太小心了,但请考虑一下:
例如,如果我将一个数组放到某个段char buff[128] __attribute__((my_section));,然后使用链接器脚本将该段放在例如地址0x10004000处,我可以始终确定&buff[0]将始终是0x10004000吗?(我正在考虑ARM公司的ARMCC (前RealView),以及基本的GCC工具链和GNU ARM开源。)可能存在从开头开始的buff偏移或填充,或者可能在buff之前的0x10004000处放置了一些服务(运行时、链接、特定于收费链)的内容
另外,在这种情况下,C和C++之间有什么区别吗?因为C++“在后台有更多的事情要做”。:) i您可以为此提供任何类型的文档以及您的知识-非常感谢。
发布于 2016-08-19 17:43:17
是,&buff将始终为0x10004000。您可以在Keil帮助文件的“编译器用户指南”一书中查看9.46节。
Char数组是c/c++的内联对象。所以编译器对c/c++做了同样的事情。
https://stackoverflow.com/questions/39032369
复制相似问题