programming/c++

[C++] 힙(heap)

chanchand 2023. 1. 8. 00:18
반응형

new / delete

C언어에서의 malloc과 free 함수를 지원하여 힙 상에서의 메모리 할당 지원

 

int 크기의 공간을 할당하여 그 주소값을 p에 넣고, p 위치에 할당된 공간에 값을 넣는다.

마지막에 할당된 공간을 해제하기 위해 delete 를 사용한다.

#include <iostream>

int main(){
	int* p=new int;
    *p=10;
    
    std::cout << *p << std::endl;
    
    delete p;
    return 0;
}

 

 

 

new 배열 할당

변수 list에 new를 이용하여 크기가 arr_size인 int 배열 생성

#include <iostream>

int main(){
    int arr_size;
    std::cout << "array size : ";
    std::cin >> arr_size;

    int *list=new int[arr_size];

    for (int i=0; i<arr_size; i++){
        std::cin >> list[i];
    }

    for (int i=0; i<arr_size; i++){
        std::cout << i << ". element of list : " << list[i] << std::endl;
    }
    
    delete[] list;
    
    return 0;
}

 

C++에서는 변수를 아무곳에서나 선언할 수 있으며, 변수를 포함하고 있는 중괄호를 빠져나갈 때 소멸된다.

컴파일러는 변수를 가장 가까운 범위부터 찾게 된다.

for문 안에서 int i를 선언하여 사용할 때, for문 밖에서는 사용할 수 없다. i는 오직 카운터로만 사용이 가능하다.

 

for (int i=0; i<arr_size; i++){
    std::cin >> list[i];
}

for (int i=0; i<arr_size; i++){
    std::cout << i << ". element of list : " << list[i] << std::endl;
}

 

반응형

'programming > c++' 카테고리의 다른 글

[programmers] 완주하지 못한 선수  (0) 2023.01.08
[C++] 객체지향  (0) 2023.01.08
[C++] 문법구조  (0) 2023.01.07
[C++] 기본  (0) 2023.01.07
[C++] VsCode  (0) 2023.01.07