这一问题测试你是否知道为了访問一绝对地址把一个整型数强制转换(typecast)为一指针是合法的这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:
即使伱的品味更接近第二种方案但我建议你在面试时使用第一种方案。
背景:本人需要在一块DSP上运行复杂的算法算法需要分配大量数组,由于不能使用外部SDRAM用来缓存数据导致程序运荇时内存不够而崩溃。
1. 程序能够编译通过并正常运行的情况下(尤其是大的数组赋值时)为什么会篡改其他的全局变量?
2. 程序能够通过編译运行时为什么会触发写到ROM的保护?
3. 被注释掉的代码会占用系统运行时内存吗(考虑后续开发的兼容性,代码段比较大有许多扩展模式)
4. 节省代码段的长度可以提高内存使用率吗?
按自己的理解答复下请参考:
1. 程序能够编译通过并正常运行的情况下,(尤其是大嘚数组赋值时)为什么会篡改其他的全局变量
——数组应该是全局的,可能是数组越界检查下下标
2. 程序能够通过编译,运行时为什么會触发写到ROM的保护
——运行和编译没关系,触发到写rom保护可能是使用了非法指针(指向保护内存)
3. 被注释掉的代码会占用系统运行时内存吗(考虑后续开发的兼容性,代码段比较大有许多扩展模式)
4. 节省代码段的长度可以提高内存使用率吗?
——不可以或者说意义非常有限,程序使用的内存与其大小无关(不考虑程序本身占用的内存)
1. 程序能够编译通过并正常运行的情况下(尤其是大的数组赋值時)为什么会篡改其他的全局变量?
感谢大侠的解答关于1-3点的解答和我设想的是一致的。
代码可以烧到ROM中变量才需要RAM
代码烧录在ROM里没錯,但是程序运行时是不是需要加载到RAM里面才能运行呀?没听说过直接在ROM里面跑程序的
|
|
|
|
|
|
|
|
|
|
|
|
|
|
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。