수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

구조체가 가지는 메모리공간에 대한 질문이요

뽀야

2023.04.01


구조체가 가지는 메모리 공간

질문 내용 :
struct fri{
char a[15];
char b[10];
float c,d;
};
이러한 구조체가 있을 때요
계산해 보면 32byte로 나오는데
sizeof 로 계산해보면 왜 36바이트가 나오는거죠?
그리고 각각의 메모리 번지를 구해보니까
1245020
1245035
1245048
1245052
이런식으로 b와c사이에 간격이 일치하지 않는데 왜 그런거죠?

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 보단

    비트필드 -_ㅡ;;

  • 소윤

    ^^ 위에 말씀한것 처럼 기본적으로 시스템은 4byte로 최소의 단위로 처리합니다.
    4byte로 안나뉘는 것은 그 곳을 padding하고 건너 뛰죠....
    그래서 위의 구조체데이타를 실제 메모리 사이즈로 보면
    a : 15 + 1(padding:dummy 쓰레기)
    b: 10 + 2(padding)
    c ,d : 4*2
    16+12+4*2 = 36이 나오는 거죠...

    33이 나오게 하는 방법은 아래와 같이 선언하면 위의최소 단위가 1로 되어서 3

  • 단순랩퍼

    게다가... 컴파일러마다 또는 OS마다.. 저장 방식이 조금씩 다르기 때문에..
    (비주얼스투디오는 컴파일 옵션텝에 보면 블럭 사이즈를 지정할 수 있습니다..)
    서로 다른 시스템 간에 unpacked된 구조체 데이터를 주고 받다 보면
    데이터가 깨지는 경우도 종종 발생합니다..

  • 연블랙

    일반적으로 구조체 참조연산자인 .연산자는 각 멤버의 사이즐 다 계산 해야하는 부담감이 있습니다.
    당연히 속도가 느려지겠죠.. 그래서 보통은 한 word (보통 2/4바이트) 단위로 데이타를 저장합니다.
    그래서 빈공간이 생기고.. 실제 구조체의 사이즈는 전체 멤버의 사이즈보다 커지게 됩니다..
    용량이 큰 구조체 배열을 사용해야할 경우 그런 공간의 낭비가 심각해지므로
    컴파일러는 packed 하게 빈공간 없이 저장할 수 있도록 하기도 합니다..

    구조체 멤

번호 제 목 글쓴이 날짜
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
2699415 파일//read//와 배열 아란 2025-06-25
2699386 구조체 안에 일부분만 char 배열에 복사하려면 어떻게 해야하나요? (1) 미즈 2025-06-25
2699361 연결리스트 정렬하는 부분에 대해서 질문 드립니다 아이처럼 2025-06-25
2699304 [기초]아직 안주무시는분 계신가요..?포인터배열? 좀 도와주세요. 놀리기 2025-06-24
2699272 printf() 함수이용해서 프로그램 만들기 질문요! (5) 다가 2025-06-24
2699221 PUSH와 POP코드를 더 간단하게 어떻게 해야할까요? 파라미 2025-06-24
2699192 설치오류가 자꾸 나요 한번봐주세여~ (1) 소녀틳향기 2025-06-23
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com