2025/09/03 12

[C++] malloc/free와 new/delete

순서malloc/freenew/delete차이점malloc/freeC와 C++언어에서 메모리 할당 및 해제를 위해 사용되는 함수임. 하지만 C스타일로 C에서 주로 이용됨malloc()은 프로그램 실행 중에 필요한 만큼의 메모리 공간을 힙영역에서 할당함malloc()은 void*을 반환함. C에서 다른 포인터로의 암묵적 변환이 허용되어 캐스트가 불필요free()함수는 malloc()으로 할당 받았던 메모리 공간을 운영체제로 반환함.생성자와 소멸자를 호출하지 않으며 실패 시 NULL을 반환함new/deleteC++에서 동적 메모리 할당 및 해제를 위해 사용되는 연산자new는 프로그램 실행 중에 필요할 때 힙 영역에 메모리를 할당하고 객체를 생성함new 동작시 내부에서 operator new로 void*를 반..

C++ 2025.09.03

[C++]동적할당과 깊은/얕은 복사

순서동적할당이란?동적할당시 주의할 점동적할당을 안전하게 하는 법깊은 복사얕은 복사깊은 복사와 얕은 복사의 차이동적할당이란?런타임에 필요한 크기의 메모리를 동적 메모리 영역인 힙에 요청하여 사용하고, 반환하는 방식new로 할당하고 delete로 반환하는 형태지역 변수는 스택에 할당되어 호출이 끝나면 자동 소멸하지만, 동적할당은 직업 해제해줘야 하여 스택과 대비됨동적할당시 주의할 점메모리 누수(Leak): 할당한 메모리를 해제하지 않아 누적되어 프로그램 메모리 사용량 증가더블 프리: 같은 포인터를 두 번 delete댕글링 포인터: 해제된 메모리를 참조혼용 사용: new와 free 또는 malloc과 delete와 같이 맞지 않는 요청예외 안전성 미고려: 중간에 예외가 나면 반환이 누락될 수 있음동적할당을 안..

C++ 2025.09.03