약 1 시간 동안 검색되었습니다. 나는 여기서 질문을 게시하는 것이 더 나을 것이라고 생각한다.구조체를 초기화 할 때 왜 segfault가 발생합니까?
코드를 단순화합니다. segfault는 initMyStruct
함수에 있습니다.
#include "stdlib.h"
typedef struct {
int * arr1;
int * arr2;
} myStruct;
void allocMyStruct (myStruct * a, int num) {
a = malloc(sizeof(myStruct));
a->arr1 = malloc(10*sizeof(int));
a->arr2 = malloc(10*num*sizeof(int));
}
void initMyStruct (myStruct * a, int num) {
int i;
for (i = 0; i < 10; i++) a->arr1[i] = 0;
for (i = 0; i < 10*num; i++) a->arr2[i] = -1;
}
void freeMyStruct (myStruct * a, int num) {
int i;
for (i = 0; i < 10; i++) free(a->arr1);
for (i = 0; i < 10*num; i++) free(a->arr2);
free(a);
}
int main (void) {
int num = 3;
myStruct * a;
allocMyStruct (a, num);
initMyStruct (a, num);
freeMyStruct (a, num);
return 1;
}
과 관련이 없지만 'main' 함수가 1을 반환하는 이유는 무엇입니까? 프로그램이 1을 반환하면 AFAIK라는 오류가 발생했음을 나타냅니다. std lib에는 매크로가 정의되어 있습니다 :'#define EXIT_SUCCESS 0'과'#define EXIT_FAILURE 1' ... –