모두의 코드 커뮤니티

C언어 상속 후 부모 자식간 형변환 시 시간이 오래 걸리는지 궁금합니다

안녕하세요
c언어를 열심히 배우고 있는데요
최근에 프로그램을 만들다가 이상한 상황을 겪게 되어 여쭤봅니다

typedef struct _A {
const char *s;
} A;

typedef struct _B {
A parent;
char *other_prop;
} B;

이런 부모 자식 관계를 만들고,
void callback_function(B *b) {
A *a = (A *)b;
printf("%s\n", a->s);

printf("%s\n", a->s);

}
라는 콜백을 실행시켰더니 printf 두개 모두
이상한 주소값이 출력되길래 다른 시도를 몇번 해보다가
callback_function(B *b) {
A *a = (A *)b;
printf("%s\n", b->parent.s);

printf("%s\n", a->s);

}
처럼 형변환을 하지 않고 직접 접근하니
두 printf 모두 제대로 된 문자열을 출력하더라고요 …
그래서 혹시 형변환에 시간이 오래 걸리나 싶어서 중간에

callback_function(B *b) {
A *a = (A *)b;
g_usleep(100000);
printf("%s\n", a->s);

printf("%s\n", a->s);

}
와 같이 sleep을 넣었더니 sleep 시간에 따라 시간이 작을때는 이상한 주소값, 특정값 이상 길때는 문자열
을 출력하더라구요…

그래서 궁금해진게 부모 자식간에 변수 개수가 많이 다르면 형변환에 실제로 시간이 오래걸리나요?

변수 개수와 형변환은 아무런 관계가 없습니다. 한 번 a->s 와 b->parent.s 값을 비교해서 보는게 좋을 것 같네요.