我有一个CGI,它有一些#pragma packed的结构。它在linux 2.6.33上运行良好,但是当我启动linux 2.6.39内核时,同样的CGI同样的请求正在中止(可能是段错误)。
如果我删除了pragma包,则代码正在使用linux 2.6.39。
我使用的是英特尔(R)Atom(TM)CPU D510。
可能是什么原因?我可以调整内核,以便CGI可以工作。
删除pragma包是我想要做的最后一件事。(它会影响其他一些代码)
引起问题的结构是
#pragma pack(push, 1)
typedef struct some
{
UINT i1;
string s1;
BYTE b1;
char c1[MAX_LENGTH + 1];
char c2[MAX_LENGTH + 1];
char c3[MAX_LENGTH + 1];
char c4[MAX_LENGTH + 1];
string s2;
UINT i2;
public:
some()
{
i1 = MACRO;
memset(c1, 0, sizeof(c1));
memset(c2, 0, sizeof(c2));
memset(c3, 0, sizeof(c3));
memset(c4, 0, sizeof(c4));
}
} some, *pE;
#pragma pack(pop)