我正在使用C ++来完成我的工作。以下是我很满意的问题。
typedef struct netHandler {
int m_iFd;
poll_event_t* m_pPollEvent;
epoll_event m_Event;
void* m_pConn;
} netHandler_t;
这是我的结构。程序运行时。我在以下地方设置了一个断点:
connection_t* conn = geneConnection(idenfication, fd, handler);
在进入这个功能之前,我会记录处理程序的内容。
p *(netHandler_t *) 0x2aaaac000960
$2 = {m_iFd = 9, m_pPollEvent = 0x2aaaac000930, m_Event =
{events = 1, data = {ptr = 0x2aaaac000960, fd = -1409283744, u32 = 2885683552, u64 = 46912518490464}},
m_pConn = 0x60d010}
然后我进入了geneConnection函数。内容发生了变化。
p *(netHandler_t *) 0x2aaaac000960
$3 = {m_iFd = 9, m_pPollEvent = 0xac00093000000000, m_Event =
{events = 10922, data = {ptr = 0xac00096000000001, fd = 1, u32 = 1, u64 = 12393916482445115393}},
m_pConn = 0x2aaa}
这就像结构一样被缩小了。
connection_t* geneConnection(long iden, int sendfd, netHandler_t* handler);
这是geneConnection的声明。我不明白为什么会这样。当我将此功能更改为内联类型时。处理程序的内容不会改变。