메모리 동적 할당 질문
해나
2023.04.01
#include stdio.h
#include stdlib.h
#include memory.hvoid imsi(int **temp);int main(int argc, char *argv[])
{
int *temp = NULL; imsi(&temp); return 0;
}void imsi(int **temp)
{
*temp = (int *)malloc(sizeof(int) * 5);
}이 코드가... 될 것 같은데 안되더라구요... 이 부분이 문제 없는줄 알고 입력이 잘못되나...메모리 참조가 잘못되나... 한 8시간 삽질하다 저 부분이 문제가 있다는걸 알았네요 ㅠㅠ결국 외부변수로 선언해서 해결하긴 했는데... 위 코드가 안되는 이유를 모르겠네요매개변수로 포인터변수의 주소 값을 넘겨주는데...함수에서 포인터변수의 주소 값이 가리키는 곳이니까 NULL이 저장되어 있는 곳에...malloc... 그러니까할당된 메모리의 시작 주소값을 넣는건데... 이게 참조라서 제대로 할당이 될줄 알았는데...하나의 크기만큼만 되고 안되더라구요... 왜 안되는지 도무지 이유를 모르겠습니다.포인터 변수의 주소값을 넘겨주고 그 포인터 변수의 주소값이 가리키는 곳(주소값을 저장할 곳)에 할당된메모리의 시작 주소값을 넣어주는건데... 그림 그려보고 다 해봤는데... 전 맞는것 같은데 ㅡ.ㅡ;;설명좀 부탁드립니다 ㅠㅠ