This file是实现非常快速的块分配方案的GoAhead WebServer的一部分。
在第284行,web服务器进程随机崩溃。
} else if ((bp = bQhead[q]) != NULL) {
/*
* Take first block off the relevant q if non-empty
*/
bQhead[q] = bp->u.next; //MEMORY ACCESS VIOLATION HERE
可能的原因是什么?
编辑
bp是指向该结构的指针,并在this header file
typedef struct {
union {
void *next; /* Pointer to next in q */
int size; /* Actual requested size */
} u;
int flags; /* Per block allocation flags */
} bType;
谢谢。
最佳答案
这是可能的原因。
你搞砸了一些东西,损坏了一些数据结构或堆栈。bQhead
是空指针或无效指针q
超出了bQhead
的范围bp
是空指针或无效指针
使用调试器逐步检查代码,或者使用printf调试,看看bQhead、q、bp是否应该是这些值。