为什么此邻接列表在输入时产生错误> = 7914?

时间:2016-03-12 18:34:16

标签: c

问题

以下邻接矩阵适用于从1到7913的所有数字。

每当用户输入7914或更高时,就会产生以下错误:

错误

异常抛出0x009818B9访问冲突读取位置0x00550004

错误位置

  1. 位于方法addEdge()
  2. 中的错误
  3. 错误位于代码newNode->next = graph->array[dest].head
  4. 问题:

    为什么它对输入1到7913有效,但是在任何大于或等于7914的数字时都会引发访问冲突?

    代码已修复

    //edit_removed_code
    

1 个答案:

答案 0 :(得分:2)

int V = 5;
struct Graph* graph = createGraph(V);

- >每个节点>=5都会导致未定义的行为。

它仅适用于7913,这是由于平台内存分配的实现(可能保留整个PAGE_SIZE对齐区域)引起的。

不要依赖这样的行为并分配足够的内存。捕获无效的节点号!