Я так запутался в этой ошибке.Я написал код для разделения набора.Когда я запускаю его, иногда это работает, иногда получаю ошибку exc_bad_access code = 2.Вот код:
typedef struct vertexSet {
int numVertexSet;
int* set1;
int* set2;
} set;
set* bipatitionSet(int Vertex) {
if (Vertex%2){
Vertex +=1;
}
set* set;
set = malloc(sizeof(set));
set->numVertexSet = Vertex/2;
set->set1 = calloc(set->numVertexSet,sizeof(int));
set->set2 = calloc(set->numVertexSet,sizeof(int));
if (set == NULL) {
printf("Set memory allocated error!");
exit(1);
}
if (set->set1 ==NULL||set->set2==NULL) {
free(set);
printf("Set memory allocated error!");
exit(1);
}
for (int i=0; i< set->numVertexSet; i++) {
set->set1[i] = i;
set->set2[i] = i + set->numVertexSet;// got error here
}
return set;
}
Когда я запустил его, я обнаружил, что адрес set2 изменяется в цикле for, и значение set2 [0] становится равным -17958193.Эта ошибка появляется иногда, но не всегда.Может кто-нибудь объяснить, почему и как исправить ошибку?Я проверил, что нет конфликта адресов.