메모리 동적할당 질문
물맑
인터넷에 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밖에 안 잡히는데요?
엄청 헷갈리네요 ㅠㅠ 자세한 설명좀 부탁드리겠습니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
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 |