example1:
#pragma pack(1)
#include "S_Client_ApplyAuthority.h"
#include <list>
struct XXX
{
SCmdHead head;
char sz_systemID[36];
char sz_systemKey[40];
int nAuthorityCount; //提示Authority个数
std::list<S_AuthorityKey> AuthorityList;
SCmdTrail trail;
char sz_systemKey[40];
int nAuthorityCount; //提示Authority个数
std::list<S_AuthorityKey> AuthorityList;
SCmdTrail trail;
}
#pragma pack()
example2:
#include "S_Client_ApplyAuthority.h"
#include <list>
#pragma pack(1)
struct XXX
{
SCmdHead head;
char sz_systemID[36];
char sz_systemKey[40];
int nAuthorityCount; //提示Authority个数
std::list<S_AuthorityKey> AuthorityList;
SCmdTrail trail;
char sz_systemKey[40];
int nAuthorityCount; //提示Authority个数
std::list<S_AuthorityKey> AuthorityList;
SCmdTrail trail;
}
#pragma pack()
背景回滚:
定义了一个结构体,在定义处,向AuthorityList做任何操作均失败,比如:clear,pushback,报错,_Nodeptr _Pnode = this->_Nextnode(this->_Myhead); 直接崩溃。
原因定位:S_Client_ApplyAuthority.h中末尾定义了pack();
教训:pack(1)\pack()一定要成对出现,且仅仅包含需要对齐的结构体。