수다닷컴

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

메모리 동적할당 질문

물맑

2023.04.01

인터넷에 2차원 배열 동적할당으로 2개의 코드를 찾았는데요
방법 1.
할당ptr=(char**)malloc(sizeof(char*) * 3); // 포인터배열 갯수*ptr=(char*)malloc(sizeof(char) * 12); // 2차원배열 총 갯수for(i = 0; i 3; i++){ ptr[i] = ptr[0] + 4 * i;}
해제free(*ptr);free(ptr);방법 2.
할당ppArray = (int**)malloc(sizeof(int) * nX);for(i = 0; i nX; i++){ ppArray[i] = (int *)malloc(sizeof(int) * nY);}
해제for(i = 0; i nX; i++){ free(ppArray[i]);}free(ppArray);
이렇게 2가지 방법을 찾았는데 둘다 맞는건가요?
첫번째 방법의 코드를 보면 3행 4열의 동적 할당을 하는것 같은데
ptr=(char**)malloc(sizeof(char*) * 3); 이 코드를 보면
sizeof(char*) *3을 했는데 이렇게 하면 char* 사이즈가 포인터 사이즈 이기 때문에 4 * 3이되서
12의 메모리가 할당되는것 같은데... 맞는건가요?
2중 포인터라서 먼저 열의 시작 주소값을 가리킬 포인터 변수들을(포인터 변수이기 때문에 메모리 4씩)
동적할당하고 거기에 열의 메모리를 할당해 주는 것같은데...
for문은 할당된 열을 4씩 끊어서 부분배열에 열의 시작 주소값을 이어주는 것 같구요
그리고 해제 할때도 free(*ptr)로 먼저 해제 하는데 이렇게 하면 3개 행의 모든 열이 다 회수 되는건가요?
이게 맞다면 2번째 방법은 자료형이 int라서 맞았지
ppArray = (int**)malloc(sizeof(int) * nX); 여기에서 sizeof(int *)로 해줘야 하나요?
2번째 방법의 코드에서 자료형만 전부 int에서 char로 바꿔줘도 맞는 코드인가요?
ppArray = (char**)malloc(sizeof(char) * 3); 이 되면 1 * 3이 되서
열의 시작 주소값을 가리키게 될 부분 배열의 포인터 변수 메모리 크기가 3밖에 안 잡히는데요?
엄청 헷갈리네요 ㅠㅠ 자세한 설명좀 부탁드리겠습니다.

신청하기





COMMENT

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

번호 제 목 글쓴이 날짜
2700400 원넓이를 계산이요 ㅜㅜ 천칭자리 2025-07-04
2700368 if에 관해서 질문이요... Orange 2025-07-04
2700339 이거 결과값이 왜이런건지.. (4) 그댸와나 2025-07-04
2700313 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) 크나 2025-07-03
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
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
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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