指针的内容在传递给函数时发生了更改 我用C++做我的工作。以下是我困惑的问题 typedef struct netHandler { int m_iFd; poll_event_t* m_pPollEvent; epoll_event m_Event; void* m_pConn; } netHandler_t;
这是我的结构。当程序运行时。我在以下位置设置了断点:指针的内容在传递给函数时发生了更改 我用C++做我的工作。以下是我困惑的问题 typedef struct netHandler { int m_iFd; poll_event_t* m_pPollEvent; epoll_event m_Event; void* m_pConn; } netHandler_t;,c++,data-structures,C++,Data Structures,这是我的结构。当程序运行时。我在以下位置设置了断点: connection_t* conn = geneConnection(idenfication, fd, handler); 在执行此函数之前,我记录处理程序的内容 p *(netHandler_t *) 0x2aaaac000960 $2 = {m_iFd = 9, m_pPollEvent = 0x2aaaac000930, m_Event = {events = 1, data = {ptr = 0x2aaaac00
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的声明。我不明白为什么会这样。当我将此函数更改为内联类型时。处理程序的内容不会更改。epoll\u event.data看起来像是一个工会在对整个项目进行清理和重建,请确保每个单元都使用相同的编译器选项。所有的东西都在同一个项目中吗?或者您正在进入一个dll或静态库吗?a将非常有用。处理程序来自哪里?它是已经返回的函数的局部变量吗?看起来编译调用方时的结构打包设置与编译geneConnection函数时不同。就像其中一个头文件执行pragma包,然后不重置它一样。
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}