我收到此错误
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 或 NULL0xFEEEFEEE
:已调用删除0xCDCCDCD
:内存已创建但未初始化。
关于Program.exe 中的 c++ : Unhandled exception at 0x57B4B2CE (msvcr120d. dll):0xC0000005:读取位置 0xCDCCDC8 访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29377040/