power-girl0-0

[ C++ ] 메모리 본문

언어/C++

[ C++ ] 메모리

power-girl0-0 2021. 4. 6. 14:11
728x90

 메모리 

1. 코드 영역 : 코드

2. 데이터 영역 : 전역변수, static 변수 (프로그램 시작시 할당, 프로그램 종료시 해제)

3. 힙(heap)영역 : 동적할당영역(new로 할당, delete로 해제)

4. 스택 (stack)영역 : 매개변수, 지역변수(해당 함수실행시 할당, 함수 종료시 해제)

 

* 변수, 클래스 배열 등은 stack 영역(정적 할당, 컴파일시에 할당)

* 동적할당은 런(실행)시에 할당하고 직접 접근 불가하지만, 스택영역에 포인터 변수로는 접근이 가능하다.


 동적할당 

  • 동적할당시 초기화 : 데이터타입 *포인터 변수 = new 데이터타입(초깃값);* 배열은 동적할당시, 초기화가 불가능하다.
  • 동적할당 해제 : delete 포인터변수;
#include <iostream>
#include <string>

using namespace std;
int main(){
	cout<<"입력할 정수의 개수는 ?";
	int n;
	cin>>n; //정수의 개수 입력 
	if(n <= 0) return 0;
	int *p = new int[n]; // n개의 정수 배열 동적할당 
	if(!p){
		cout<<"메모리를 할당할 수 없습니다.";
		return 0;
	} 
	
	for(int i= 0; i<n; i++){
		cout<<i+1<<"번째정수 : ";
		cin>> p[i]; 
	}
	
	int sum=0;
	for(int i=0; i<n; i++)
		sum += p[i];
	cout<<"평균 : "<<sum/n<<endl;
	
	delete []p; //메모리 반환 
}

 

 

 

 

 

728x90
Comments