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是否应该是这些值。

09-28 02:56