#include <stdio.h>
#include <malloc.h>

int pn;

int GetPTR(short **r)
{
int i;
r = (short**)malloc(sizeof(int));
for (i = 0; i < pn; i++)
  {
*r = (short*)malloc(sizeof(short)*pn);
  }
return r;
}

void message()
{
printf("동적할당 short메모리갯수입력 : ");
scanf_s("%d", &pn);
rewind(stdin);
printf("\n");
}

void main()
{
short **p;
message();
while (pn > 65536 || pn < 1)
  {
printf("65536개를 넘거나 0개이하로 입력하지 마시오!\n");
message();
  }
p = GetPTR(&p);
int pp = &*p;
printf("동적할당된 포인터의 주소는 %d 입니다.",&pp);
free(p);
}


제가 연습겸 2차원 포인터로 포인터1개를 heap영역에 배정하고 그 포인텨로 여러개 short형 메모리를 할당하는 소스를 짜 보았습니다.
일단 stack영역에 short**p를 정의하고 p의 주소를 short**r로 보내주었고 heap영역안에 1차원 포인터를 만들고 1차원포인터를 이용해 short메모리를 동적할당하는 소스를 만들었는데요. 일단 제가 디버깅없이 실행을 해보니 명령화면은 잘 뜨고 pn값 입력도 잘 됩니다. 65536 넘거나 음수 입력하면 오류가 뜨면서 다시 입력하는것도 잘 구현이 되었습니다. 그런데 pn값 적당한걸 입력하고 엔터 누르면 계속하려면 아무키나 누르십시오... 라는 메세지가 안 뜨고 그냥 닫혀버립니다. 이것 외에 혹시 또 잘못된 코드부분이 있나요?
프로그래밍은 처음이라 오류가 많을 수도 있어요.

- 훈타는적폐