Program.exe 中的 c++ : Unhandled exception at 0x57B4B2CE (msvcr120d. dll):0xC0000005:读取位置 0xCDCCDC8 访问冲突

标签 c debugging pointers

我收到此错误

Unhandled exception at 0x57B4B2CE (msvcr120d.dll) in Program.exe: 0xC0000005: Access violation reading location 0xCDCDCDC8

它发生在这部分代码中:

void Print_Function(char * output_file)
{
    f = 0;
    f = fopen(output_file,"w");

    for (int i = 0 ; i < count_total ; i++)
    {
        for (int j = 0 ; j < sizes[i] ; j++)
        {
            for (int k = 0 ; k < rules[i][j]->sizes_elements ; k++)
                if (k < rules[i][j]->sizes_elements - 1) fprintf(f,"%i ", elements[rules[i][j]->elements[k]]);
                else fprintf(f,"%i", elements[rules[i][j]->elements[k]]);

            fprintf(f,":%.3f:%i\n", rules[i][j]->measure_value,rules[i][j]->index);

            free(rules[i][j]->elements); rules[i][j]->elements = 0;
            free(rules[i][j]); rules[i][j] = 0;
        }

        free(rules[i]); rules[i] = 0;
    }

    fclose(f); f = 0;

    free(rules); rules = 0;
    free(size_rules); size_rules = 0;
    free(elements); elements = 0;
}

异常在这部分代码中专门启动

free(rules[i]); rules[i] = 0;    

在外循环的第一次迭代之后,之前的 free 是否做了一些我没有注意到的事情,并且不像我期望的那样?

感谢任何帮助。

最佳答案

Visual Studio 使用多个假地址作为内存状态的指示器:

  • 0x00000000:nullptr 或 NULL
  • 0xFEEEFEEE:已调用删除
  • 0xCDCCDCD:内存已创建但未初始化。

关于Program.exe 中的 c++ : Unhandled exception at 0x57B4B2CE (msvcr120d. dll):0xC0000005:读取位置 0xCDCCDC8 访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29377040/

相关文章:

c - 如何将由逗号和空格分隔的整数读入C中的数组中

c - 有没有办法优化这种数据的排序?

c - 是否有任何加扰单词的算法?

swift - 线程 1 : signal SIGABRT error when using IBActions?

c - 我试图通过指针和二维数组访问数据,但出现总线错误,有人知道为什么会出现这种情况吗?

asp.net - 后面代码中的断点未命中

ios - 调试聊天应用

c++ - 数组实际上是如何工作的?

c - 有没有办法用指针+变量来遍历数组?

C++方法应该接受指向指针的指针,接收地址并且仍然有效