< new와 delete >
- new 연산자를 사용할 경우 명시적 형변환을 할 필요가 없다.
int *p=(int *) malloc(sizeof(int)); // 4바이트 할당 int *p=(int *) malloc(sizeof(int)*3); // 12바이트(int형 3개를 갖는 배열) 할당 |
int *p=new int; // 4바이트 할당 int *p=new int[3]; // 12바이트(int형 3개를 갖는 배열) 할당 |
- 메모리 할당과 동시에 초기화가 가능하다(단, 배열 형태로 할당받을 경우에는 초기화가 여전히 불가능).
int *p=new int(100); // int형 변수 하나를 할당받으면서 값을 '100'으로 초기화. |
- new를 사용하여 메모리를 할당한 경우에는 delete 연산자를 사용해서 메모리 해제를 해야한다.
delete p; delete [] p; |
--------------------------------------------------------------------------------------------------------------------------
ex 10. (int형 변수 하나의 동적 할당 및 초기화) #include <iostream>
int main(void){
cout<<"포인터 변수의 주소 : "<<&p<<endl;
delete p;
return 0; |
ex 11. int형 변수 5개를 동적으로 할당받고 각각 해당 원소의 인덱스로 값 채우기. (배열의 동적 할당) #include <iostream>
int main(void){
for(int i=0; i<5; i++)
for(int i=0; i<5; i++)
delete [] p;
return 0; |
ex 12. (2차원 배열의 동적 할당) #include <iostream>
int main(void){
for(i=0; i<4; i++)
for(i=0; i<4; i++){
for(i=0; i<4; i++){
for(i=0; i<4; i++)
return 0; |
ex 12_1. (2차원 배열의 동적 할당) - delete 한 번만 해주도록. #include <iostream>
int main(void){
for(int i=0; i<4; i++){
for(int i=0; i<4; i++){
delete [] p; // 한 번만 delete(해제)해주면 됨.
return 0; |
'Computer Languages > C | C++' 카테고리의 다른 글
string을 char로 취급하기 (0) | 2010.10.21 |
---|---|
[펌]private, proteted, public 의 차이 (3) | 2010.10.12 |
포인터 개념 (0) | 2010.10.11 |
3x3 행렬의 곱 (0) | 2010.10.08 |
링크드리스트(노드추가/삭제) (0) | 2010.10.08 |