Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[4597] Re:2차원 배열의 동적 할당 법
남병철.레조 [lezo] 2972 읽음    2004-07-28 11:37
int (*i)[10000] = new int[10000][10000];
i[0][0] = 100;
ShowMessage( i[0][0] );
delete[] i;

오른쪽 첨자는 항상 상수값이어야합니다.
ex) int (*i)[100] = new int[x][100];






--------------------------------------------------------------------------------------------
뒤늦은 답변이지만 저도 한때 안되는걸로 알았었습니다.
물론 한번에 되지는 않습니다. 하지만 아래처럼 약간의 수고를 해서 구현하려 하지 못한것이 못내 아쉽기도
합니다. ㅋㅋㅋ ^^ㅋ

동적 2차원 배열로 구성하려면 약간 수고?를 해서 구성해 주면 정적 배열선언처럼 쉽게 사용할 수 있습
니다. 이를 이용하면 3차원도 가능하겠지요. 단, 메모리 해제를 잊지 말아야 합니다.
따로 해제관련으로 관리해 주는것이 좋을것 같습니다.

자~ 잡담은 그만하고, 아래에 네이버 지식인에서 퍼온 글을 읽어보세요. ^^

[네이버 지식인]

*a = (int *) malloc(sizeof(int)*r1); // a[b]의 메모리 할당

for(i = 0 ; i < r1 ; i++)
{
a[i] =(int *) malloc(r1*sizeof(int)); // a[b][b]의 메모리 할당
}

는 다음과 같이 고치십시요.
int **a;

a = (int **) malloc(sizeof(int)*r1); // a[b]의 메모리 할당

for(i = 0 ; i < r1 ; i++)
{
a[i] =(int *) malloc(r1*sizeof(int)); // a[b][b]의 메모리 할당
}

왜 할당이 안되었는지 알려드리죠.

a는 포인터의 포인터로 정의되었습니다. 이 말은 바꾸어 말하면 int형의 데이터를 가리키는 포인터를 가리키는 포인터가 a의 정체라는 뜻입니다. 이러니 저러니 말은 많이 해도 일단 a는 일단 포인터입니다. 포인터는 초기화를 안했을경우 그 안에 어떤 값이 들어있을지 알수가 없답니다. 만약 a안에 1이 들어있다고 하면,
*a = (int *) malloc(sizeof(int)*r1);
줄은 malloc에 의해 할당된 메모리의 주소값이 리턴되어 *a로 들어갑니다. 즉 a가 가리키는 1번지에 그 주소값이 들어간단 뜻이죠. 도대체 그 1번지에 어떤 데이터가 있었을까요? 그건 아무도 없겠지만, 여하튼 데이터는 완전히 날라가 버립니다.

그리고 malloc으로 데이터를 할당한 이후 그 포인터의 값이 NULL인지 반드시 확인해 보십시요. NULL이라면 메모리가 할당되지 않았단 뜻이므로, 프로그램을 계속 진행시키면 안됩니다. 그러니 조십하십시요.


reflexive 는 님이 뭘 원하는 건지를 잘 모르겠군요. 그래서 그냥 넘기겠습니다.



ps.
http://kin.naver.com/browse/db_detail.php?dir_id=10104&docid=290520




권기식 님이 쓰신 글 :
: 안녕하세요?
: 2차원 배열을 동적 할당하려고 하는데요...
: 한 번도 안해봐서 잘 안되는군요...
:
: 클래스 멤버로 선언된 포인터 변수를 외부나 다른 멤버 펑션에서 동적으로 할당하려고 합니다.
:
: int *i;
:
:
: i = new int[5][5];
:
: 이런식으로 하면 안되더군요...
: 포인터 선언을 2중으로, 즉 포인터의 포인터로 선언해도 안되고...
:
: 도움 부탁드리겠습니다.

+ -

관련 글 리스트
1568 2차원 배열의 동적 할당 법 권기식 1791 2002/11/15
4597     Re:2차원 배열의 동적 할당 법 남병철.레조 2972 2004/07/28
1569     Re:2차원 벡터의 정의 방법 김백일 1902 2002/11/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.