C/C++메모리 영역 구분 에 대한 자세 한 설명(간단 하고 알 기 쉬 움)

C 언어 는 메모리 에서 모두 다음 과 같은 몇 개의 구역 으로 나 뉘 는데 각각:
1.메모리 스 택:부분 변수 이름 저장;
2.메모리 블록:new 또는 malloc 를 저장 하 는 대상;
3.상수 구역:국부 변수 나 전역 변 수 를 저장 하 는 값;
4.정적 구역:전역 변수 나 정적 변 수 를 저장 하 는 데 사 용 됩 니 다.
5.코드 영역:바 이 너 리 코드.
위의 메모리 분배 메커니즘 과 같이 우리 가 지침 의 개념 을 이해 하 는 데 도움 이 된다 는 것 을 안다.
C/C++는 쓰레기 회수 체 제 를 제공 하지 않 기 때문에 쌓 여 있 는 데 이 터 를 제때에 소각 하고 메모리 누 출 을 방지 해 야 합 니 다.free 와 delete 를 사용 하여 new 와 malloc 가 신청 한 메모 리 를 소각 해 야 합 니 다.스 택 메모 리 는 동적 으로 방출 됩 니 다.
C/C++메모리 영역 구분 상세 설명
C/C++메모리 분포
在这里插入图片描述
C/C+에서 메모 리 는 주로 쌓 기,창고,전역/정적 저장 소 와 상수 저장 소로 나 뉜 다.
스 택:스 택 은 스 택 이 라 고도 부 릅 니 다.컴 파일 러 가 필요 할 때 분배 되 고 필요 하지 않 을 때 자동 으로 지 워 지 는 변수의 저장 소 입 니 다.안의 변 수 는 보통 국부 변수,함수 파라미터 등 으로 아래로 증가한다.아래로 자 라 는 것 은 먼저 호출 된 스 택 프레임 의 주소 가 나중에 호출 된 주소 보다 크 고 스 택 의 보통 크기 는 몇 M 정도 입 니 다.

#include<iostream>
using namespace std;

void f2()
{
	int b = 0;
	cout << "b:" << &b << endl;
}
void f1()
{
	int a = 0;
	cout <<"a:" <<&a << endl;

	f2();
}
int main()
{
	f1();
	return 0;
}
在这里插入图片描述
더미:new/maloc 에서 분 배 된 메모리 블록 입 니 다.그들의 방출 컴 파일 러 는 관리 하지 않 고 우리 의 응용 프로그램 에서 제어 합 니 다.보통 new/maloc 는 delete/free 에 대응 하여 프로그래머 가 주동 적 으로 방출 해 야 합 니 다.더 미 는 위로 늘 어 날 수 있 습 니 다.먼저 만들어 진 더 미 는 나중에 만들어 진 더 미 를 의미 합 니 다.

#include<iostream>
using namespace std;

int main()
{
	void* p1 = malloc(10);
	void* p2 = malloc(10);

	cout << p1 << endl;
	cout << p2 << endl;

	return 0;
}
在这里插入图片描述
데이터 세그먼트:전역 데이터 와 정적 데 이 터 를 저장 합 니 다.
코드 세그먼트:실행 가능 한 코드/상수 만 읽 기
메모리 분 포 를 알 았 으 니 다음 문 제 를 풀 어 보 겠 습 니 다.지식 을 시험 할 때 가 되 었 습 니 다.몇 문 제 를 풀 수 있 는 지 보 세 요.
在这里插入图片描述
앞의 몇 문제 가 아직 뜻 대로 되 었 는 지 뒤 가 좀 흐리멍덩 해 졌 다
在这里插入图片描述
在这里插入图片描述
창고 와 더미 의 차이:
창고:컴 파 일 러 가 자동 으로 분배 하고 방출 하 며 일반 저장 함수 의 매개 변수 국부 변수 등
더미:프로그래머 가 분배 하여 방출 하고,프로그램 이 방출 되 지 않 으 면 시스템 이 방출 됩 니 다.
1.메모리 신청 방식
스 택:변수 성명 과 같은 시스템 에서 자동 으로 분 배 됩 니 다.(int a;4 개의 바이트 공간 열기(정적 지정)
더미:프로그래머 가 신청 하고 크기(동적 할당)를 정 해 야 합 니 다.
2.시스템 응답 의 차이
스 택:남 은 공간 이 신청 메모리 보다 크 면 시스템 이 제공 합 니 다.그렇지 않 으 면 스 택 이 넘 칠 것 입 니 다.
더미:남 은 주소 링크 를 사용 하여 요구 에 맞 는 주 소 를 찾 으 면 프로그램 에 할당 되 는 주 소 를 삭제 합 니 다.메모리 의 첫 번 째 주 소 는 분 배 된 크기 를 기록 합 니 다.(delete)남 은 메모리 회수 에 편리 합 니 다.
3.공간 크기 가 다르다
스 택:연속,컴 파일 시 확 정 된 상수
더미:연속 되 지 않 습 니 다.그의 상한 선 은 시스템 에서 효과 적 인 가상 메모리 로 결 정 됩 니 다.
4.집행 효율 의 차이
창고:시스템 에서 분배,속도 가 빠르다
더미:프로그래머 의 분배,속도 가 느 려 서 메모리 조각 이 생기 기 쉽 지만 사용 하기에 편리 합 니 다.
C/C++메모리 영역 구분 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 C++메모리 구분 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기