我有以下代码是大代码的代码片段。我试图释放我已在此代码中分配内存的结构数组。不幸的是,当我更改代码中的特定行时,我得到seg错误或没有segfault(无错误)。我无法找到原因。有人可以看看,并指出原因。所以,如果我在void_free_atom中将atom [i] - > natoms更改为atom [i] - > natoms-1,我得到没有segault但valgrind显示堆不是完全空闲的。注意atom [i] - > natoms是一个常数。
.appEllipseContent {
overflow: hidden;
white-space: nowrap;
-ms-text-overflow: ellipsis;
text-overflow: ellipsis;
width:200px;
}
.appEllipseContenthover {
overflow: visible;
white-space: normal;
}
答案 0 :(得分:0)
假设你有2个原子。然后这个循环:
for(i=0;i< atom[i]->natoms;i++){
free(atom[i]);
}
将执行以下操作:
0 < atom[0]->natoms
free(atom[0])
。1 < atom[1]->natoms
free(atom[1])
。2 < atom[2]->natoms
- 哎呀!没有atom[2]
!atom[2]
包含无效指针。