C++에서 new 이용하여 동적 메모리 할당하는 것 정리.
일반변수 동적 생성 및 제거.
int* p; // int형의 포인터 변수선언.
p = new int; // 동적생성함.
*p = 234; // 변수사용예. .
delete p; // 동적할당한 메모리 제거.
p=NULL; // delete p; 는 메모리 공간을 제거했을뿐. 포인터 변수 p가 가리키는 주소는 남아있는 상태다. 이것까지 제거해둠.
1차원 배열 동적 생성 및 제거.
- 250개의 정수형배열을 동적생성하는 예.
int* p; // 포인터 변수 선언.
p = new int[250]; // int형으로 배열크기 250 인 메모리 공간 할당했음.
p[240] = 350; // 변수사용예.
delete[] p; // 동적할당한 메모리 제거.
p=NULL;
2차원 배열 동적 생성 및 제거.
100 x 10 의 정수형 2차원 배열 동적 생성하는 예.
int** p; // 포인터 변수 선언.
p = new int*[100]; // 100x10 중의 앞의 것 수량만큼 동적생성해두고,
for(int i=0;i<100;i++)
p[i] = new int[10]; // 100번 루프 돌면서 10개짜리 배열 추가 동적 생성.
p[99][9] = 111; // 변수 사용예.
/// 동적생성한 메모리 제거.
for(int i=0;i<100;i++)
{
delete[] p[i];
}
delete[] p;
주의사항 : 위와 같이 2차원 배열을 동적생성하면 메모리 할당주소가 1개 열에서만 +1씩 증가되면서 서로 붙어있고, 열이 변경되면 이전열 마지막 주소에 +1 관계 아님. 즉, p[0][9] 의 주소에 더하기 1을 한것이 p[1][0] 의 주소가 아님.
본 글 포함된 상위 정리글 https://igotit.tistory.com/11 Visual Studio/VC++/C/C# 활용정리 |
첫등록 : 2015년 1월 17일
최종수정 :
본 글 단축주소 : https://igotit.tistory.com/216
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
다른 프로그램과 메시지 송수신. - RegisterWindowMessage (0) | 2015.06.05 |
---|---|
Virtual-Key Codes. VC++ (0) | 2015.01.19 |
키보드 입력처리. VC++ MFC 이용하는 경우. (0) | 2015.01.19 |
스레드 생성 방법 및 다중스레드 사용위한 필수 옵션 셋팅. VC++ (0) | 2015.01.10 |
GetLastError 표현하기, 프로세스 죽이기.VC++ (0) | 2015.01.10 |
댓글