메모리 관리(11)
-
C언어 초급 - 11장: 동적 메모리 할당 (11.2 메모리 누수 방지와 free() 함수의 중요성)
11.2 메모리 누수 방지와 free() 함수의 중요성1. 메모리 누수란?메모리 누수(Memory Leak) 는 프로그램에서 동적으로 할당한 메모리를 해제하지 않아, 사용되지 않는 메모리가 계속 남아있는 현상입니다.C 언어는 자동 메모리 관리 기능이 없기 때문에, 동적 할당(malloc(), calloc(), realloc())으로 확보한 메모리는 반드시 free()를 사용하여 직접 해제해야 합니다.📌 메모리 누수가 발생하면?점점 사용 가능한 메모리가 줄어들어 프로그램이 느려지고 결국 충돌(Crash) 발생.특히, 장시간 실행되는 프로그램(서버, 임베디드 시스템 등)에서 심각한 문제 유발.✅ 해결 방법: 동적 메모리 할당 후 반드시 free()를 호출하여 메모리를 해제해야 함.2. free() 함수란?..
2025.02.24 -
C언어 초급 - 11장: 동적 메모리 할당 (11.1 동적 메모리 할당의 필요성)
11.1 동적 메모리 할당의 필요성1. 동적 메모리 할당이란?동적 메모리 할당(Dynamic Memory Allocation)은 프로그램 실행 중에 메모리를 할당하고 해제하는 기능입니다.C 언어에서 메모리는 크게 정적 메모리(Static Memory)와 동적 메모리(Dynamic Memory) 로 나뉩니다.1.1 정적 메모리 할당(Static Memory Allocation)컴파일 시 메모리 크기가 결정됨.int arr[100]; → 한 번 크기를 지정하면 변경 불가.배열 크기를 미리 예측해야 하므로 비효율적일 수 있음.1.2 동적 메모리 할당(Dynamic Memory Allocation)프로그램 실행 중에 메모리 크기를 조정 가능.malloc(), calloc(), realloc() 함수를 사용하여 ..
2025.02.24 -
C++ 초급 - 12. 최신 C++ 기능 소개 (2 - C++14: 개선된 스마트 포인터)
📌 12.2 C++14: 개선된 스마트 포인터C++14에서는 C++11의 부족한 기능을 보완하고, 기존 문법을 개선하여 더 안전하고 직관적인 코드 작성이 가능하다.그중 가장 중요한 개선점 중 하나는 스마트 포인터(std::unique_ptr)의 생성 방식 개선이다.📌 1. std::make_unique를 활용한 안전한 스마트 포인터 생성🔹 (1) 기존 std::unique_ptr 생성 방식 (C++11)C++11에서는 std::unique_ptr을 생성할 때 new를 직접 사용해야 했다.💡 예제: C++11에서 std::unique_ptr 생성#include #include // 스마트 포인터 헤더 포함int main() { std::unique_ptr ptr(new int(42)); ..
2025.02.22 -
C++ 초급 - 5. 포인터와 참조 (Pointers and References) (4 - 스마트 포인터 (std::unique_ptr, std::shared_ptr, std::weak_ptr))
📌 5.4 스마트 포인터 (std::unique_ptr, std::shared_ptr, std::weak_ptr)C++11부터 스마트 포인터(Smart Pointer)가 도입되어,개발자가 직접 delete를 호출하지 않아도 메모리가 자동 관리된다.스마트 포인터를 사용하면 메모리 누수를 방지하고, 포인터의 안전성을 향상시킬 수 있다.C++ 표준 라이브러리 헤더를 포함하면 사용할 수 있다.📌 1. 스마트 포인터의 필요성일반 포인터(new/delete)를 사용하면 메모리 누수(Memory Leak)가 발생할 위험이 있다.특히, 예외(Exception)가 발생하는 경우 delete가 호출되지 않아 누수가 발생할 수 있다.💡 일반 포인터의 문제점 (메모리 누수 발생)#include void memoryLe..
2025.02.12 -
C++ 초급 - 4. 함수와 변수의 범위 (Functions and Variable Scope) (4 - 변수의 범위 (Variable Scope))
📌 4.4 변수의 범위 (Variable Scope)C++에서 변수의 범위(Scope)란 변수가 어디에서 접근할 수 있는지를 결정하는 규칙이다.변수의 선언 위치와 저장 방식에 따라 접근 가능 여부와 생명 주기(lifetime)가 달라진다.변수의 범위를 이해하면 메모리 관리, 성능 최적화, 코드 유지보수에 도움이 된다.📌 1. 변수의 종류🔹 (1) 전역 변수 (Global Variables)함수 외부에서 선언된 변수로, 프로그램 전체에서 접근 가능.프로그램이 시작될 때 생성되고 종료될 때까지 유지됨.메모리의 데이터 영역(Data Section)에 저장됨.💡 예제: 전역 변수 사용#include int globalVar = 10; // 전역 변수void printGlobal() { std::c..
2025.02.12