传递给函数时指针的内容发生了变化

时间:2014-12-22 03:37:46

标签: c++ data-structures

我正在使用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的声明。我不明白为什么会这样。当我将此功能更改为内联类型时。处理程序的内容不会改变。

0 个答案:

没有答案