본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

동적 메모리 할당. 변수,배열, new delete

by i.got.it 2015. 1. 17.

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





댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5