+ -
当前位置:首页 → 问答吧 → .text和.rdata中的字符串问题

.text和.rdata中的字符串问题

时间:2011-06-21

来源:互联网

rdata段中最典型的
.rdata:0041634C aEWorkspaceVs20 db 'E:\workspace\vs2008\MSDN\Debug\PID.pdb',0
.text中
.text:00411554 byte_411554 db 73h, 6Eh, 0 ; DATA XREF: _main+180o
.text:00411557 aTkuser db 'tkUser',0 ; DATA XREF: _main+174o
.text:0041155E aHprocesstoken db 'hProcessToken',0 ; DATA XREF: _main+168o
.text:0041156C aReturnlength db 'ReturnLength',0 ; DATA XREF: _main+15Co
.text:00411579 aChbuffer db 'chBuffer',0 ; DATA XREF: _main+150o
上述几个都是我在函数中定义的几个变量

我的问题是:
全局变量的数据影响着程序的大小,就好比是上述的rdata中的字符串;但是text段中定义个几个变量好像也要在程序未运行前占用空间,这个作何解释啊? 
还有个问题
int gInt=12;
char gChar[10]="abcdefg";
char *gP=gChar;
static char sgChar[20]="GlobalstaticChar";
const char cgChar[15]="constChar";
const int cgInt=7654321;
在IDA里我在data段中我找不到cgchar和gint,cgint,而且在rdata中也没有找到cgdata,而且整型变量我一个都没有找到

作者: yzy6806555   发布时间: 2011-06-21

你说的cgchar,gint,cgint都是常量,常量跟全局变量不在一起。

作者: dizuo   发布时间: 2011-06-21

全局区和常量区是两个地方

作者: bdmh   发布时间: 2011-06-21

谢谢,那个gint能找到了,我说错了。那常量不是应该在rdata中,但是我找到啊。还有第一个问题,text段中也有变量定义占用空间,这个会不会占用程序大小呢

作者: yzy6806555   发布时间: 2011-06-21

《程序员的自我修养——链接、装载与库》

作者: zhao4zhong1   发布时间: 2011-06-21

来个人解释下啊,别尽说写表面的

作者: yzy6806555   发布时间: 2011-06-22

C++的常量可能不分配空间的

作者: Areslee   发布时间: 2011-06-23