- 论坛徽章:
- 0
|
你们好。
Hi,everyone.我在下面的代码里定义了一个全局变量和一个局部变量,可是局部变量有效,全局变量是无效的。请看代码如下:- char testa[10]="hello";
- int main()
- {
- char testb[10]="world";
- //print(testa); //当我用这个函数打印时,没有字符串显示。
- print(testb); //这个函数可以正常显示字符串;
- ..............
- }
复制代码 这是mapfile文件- ............
- .init_array
- *(.init_array)
- 0x00011000 PROVIDE (__init_array_end, .)
- 0x00011000 PROVIDE (__fini_array_start, .)
- .fini_array
- *(.fini_array)
- 0x00011000 PROVIDE (__fini_array_end, .)
- .data 0x00011000 0x16
- *(.data .data.* .gnu.linkonce.d.*)
- .data 0x00011000 0xa kernel/global.o
- 0x00011000 teststring
- *fill* 0x0001100a 0x2 00
- .data 0x0001100c 0xa kernel/main.o
- 0x0001100c testa
- ..................
复制代码 为什么定义了一个全局变量后,在main函数内没显示字符串,但是用局部变量却正常显示? 我用bochs查了下地址0x0001100c(即testb的地址), 发现全部是空。有没有这种可能性:数据段(.data)的testa自动被加载了原始的空串,而自定义的全局串却没有加载进去?
请大家帮帮我,指点下。谢谢你们!
[ 本帖最后由 morexpc 于 2007-8-10 15:37 编辑 ] |
|