본문 바로가기
VisualStudio.C++.C#/C . C++

C/C++. 메모리 스택, 힙,지역변수, 동적 메모리 할당. stack, heap, new, delete

by i.got.it 2019. 12. 28.

 

 

스택(Stack), 힙(Heap)

 

 

C/C++ 에서의 스택이니, 힙이니 하는 것들은 C/C++ 컴파일러에서 메모리 핸들링 하는 것에 대한 기능적 메모리 구분 명칭.

(타겟 시스템에 하드웨어적으로 스택, 힙 영역의 메모리가 따로 있는 것 아님)

 

Stack 

1. 프로그램의 "함수"에서 선언된 지역변수(자동변수) 저장되는 메모리.

2. 함수가 끝나면 stack 에 저장된 것은 프로그램 코드에서 명시적 제거 처리 하지 않아도 자동 삭제됨.

 

Heap

1. 프로그램에서 "동적 생성"한 경우 Heap 에 저장됨.

- 동적 생성이란, new, malloc 함수 등으로 메모리 할당하는것을 의미함.

2. Heap 에 생성된 메모리는 자동 삭제되지 않음. 프로그램내에서 명시적으로 제거처리(delete, free 등) 해야 삭제됨.

 

코딩 실전 지식.

코딩 실전에서는 stack 구조니, heap 구조니...  이 딴게  아니라,  아래 사실을 필수 숙지하고 있어야 함. 

 

동적생성되지 않은 함수내의 개체는 함수 끝나면 자동삭제됨.

 

동적생성된 모든 개체는 자동삭제 안됨. 삭제할려면 코드에서 명시적으로 제거처리 해줘야함.

 

개체라함은 클래스 인스턴스, 구조체, 변수 모두 해당함.

 

 

기타 메모리.

상기 stack, heap 외에 컴파일러에서 관리하는 메모리 명칭은 아래와 같은 것들이 있음.

 

BSS :  전역변수(초기값 없는) 저장소.

DATA : 전역변수(초기값 있는) 저장소.

CONST : 변수초기화 데이터. 상기 DATA의 초기화 값을 의미함.

RODATA: 상수값들.

메모리 구분 상세정보 위키 : https://ko.wikipedia.org/wiki/%EB%8F%99%EC%A0%81_%EB%A9%94%EB%AA%A8%EB%A6%AC_%ED%95%A0%EB%8B%B9

 

 

 

 

연관

 

 

C. malloc , free 메모리 동적 할당. 제거.

헤더파일 : stdlib.h void * malloc (uint32_t byte_size) 반환값 성공시 생성된 주소 포인터 실패시 NULL void free(void * ptr) - malloc 으로 생성된 메모리 영역 제거하는것. 사용예 . - uint8_t 1차원배열 10..

igotit.tistory.com

 

 

C/C++. 구조체 메모리 동적 할당.

// 정적 구조체 배열 생성예. typedef struct _st1 { uint8_t ui8Arr[100]; }ST_T1 ST_T1 myST_T1[5][9]; // 구조체 ST_T1 을 2차원 배열 5x9 짜리로 생성하는것. ST_T1 의 멤버 1차원 배열을 동적생성 상기와 같..

igotit.tistory.com

 

 

 

STM32. 힙 , 스택 사이즈 설정 . KEIL. SW4STM32. CubeMX

개요 STM32 에서 사용가능한 힙 과 스택 메모리 사이즈 설정하기. 사용하는 IDE 에 따라서 힙 , 스택 사이즈 설정되는 곳이 다르다. - KEIL MDK-ARM 에서는 파일 startup_stm32xxx.s 에서 힙과 스택 최대 사이즈..

igotit.tistory.com

 

 

 

SES. 힙 사이즈 설정

SES 프로젝트 Options... 클릭하여 뜬 아래창에서 붉은 박스 힙사이즈 기본 0으로 되어있는데 이 값이 0인 경우 코드에서 malloc 으로 동적 메모리 할당해도 메모리 할당에 실패하므로 적절한 사이즈로 설정해둔다..

igotit.tistory.com

 

 

 

 

상위 정리글

 

Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11

 

Visual Studio , Visual C++ 활용 정리.

Visual Studio C++ 활용 Visual Studio C++ Visual Studio Visual C++ / C# 1.설치, 설정 주제 비고. Visual Studio 2010 설치. Visual Studio 2013 (Community)무료 설치. Visaul Studio 2015 (Community)무료..

igotit.tistory.com

 


첫 등록 : 2016년 1월 4일 

최종 수정 : 2019년 12월 28일 

단축 주소 : https://igotit.tistory.com/532

 


 

 

댓글



 

비트코인




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