구조체 질문이요..!!!

익명 사용자의 이미지

리눅스에서 짠거거든요..
gcc g++ 모두 세그멘테이션 오류가 나는데..헉헉..
모르겠네요...
길지 않으니깐 쪼금만이라도 봐주고 조언좀 해주세요..!!

#include
#include
#include
typedef struct{
int a;
int b;
}sttest;

int main(void)
{

sttest x;
sttest *py;


x.a = 1;
py-> a = 2;
printf("%d\n", x.a);

printf("%d\n", sizeof(sttest));

return 0;

}

익명 사용자의 이미지

py-> a = 2; 이게 문제군요.

포인터 변수만 선언하고 공간을 할당 하지 않았군요.

아래처럼 한 다음 사용 하세요.

sttest y;
sttest *py;

py = &y;

py-> a = 2;

익명 사용자의 이미지

윗 님의 말씀데로 메모리 문제입니다.

malloc()를 이용해서 메모리를 할당해주면. 될거에요..

py = (struct sttest *)malloc(sizeof(struct sttest *));

위의 내용을

py-> a = 2;

위에 써 주면 됩니다.

메모리가 할당되지 않은 변수에 값을 삽입하여 발생한 오류입니다.

포인터형 구조체는 형만 선언된 것이지 실제로 메모리는 가지고 있지 않거
든여... 도움 되셨길 ^^