๐Ÿ“ Coding Test Study/C++

[C++] ์ •์ /๋™์  ํ• ๋‹น๋œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ๊ตฌํ•˜๊ธฐ

ibelieveinme 2021. 9. 20. 22:11
728x90

์ •์ ํ• ๋‹น์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ณ€์ˆ˜๋Š” DATA์˜์—ญ์— ์ €์žฅ๋˜๋Š”๋ฐ,

๋™์ ํ• ๋‹น์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ณ€์ˆ˜๋Š” HEAP์˜์—ญ์— ์ €์žฅ๋œ๋‹ค.

 

DATA ์˜์—ญ์— ํ• ๋‹น๋œ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” sizeof ์—ฐ์‚ฐ์ž๋กœ ํฌ๊ธฐ๋ฅผ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ,

HEAP ์˜์—ญ์— ํ• ๋‹น๋œ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” sizeof ์—ฐ์‚ฐ์ž๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†๋‹ค. _msize ์—ฐ์‚ฐ์ž๋กœ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค.

 

_msize

Learn more about: _msize

docs.microsoft.com

 

* ์ •์ ํ• ๋‹น์œผ๋กœ ๋งŒ๋“  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ๊ตฌํ•˜๊ธฐ

int arr[5];
int arr_size = sizeof(arr) / sizeof(int);

 

* ๋™์ ํ• ๋‹น์œผ๋กœ ๋งŒ๋“  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ๊ตฌํ•˜๊ธฐ

#include <iostream>
#include <malloc.h> // _msize() ์‚ฌ์šฉ์„ ์œ„ํ•ด malloc.h ํ—ค๋” ์ถ”๊ฐ€!
using namespace std;

int main(){
	int n = 10;
	int *arr = new int[n](); // ()๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋จ!

	cout << _msize(arr) << "\n";	// 40
	cout << _msize(arr)/sizeof(int) << "\n"; // 10
    
	delete arr[];
	return 0;
}

-> _msize(arr)์ด 40์ธ ์ด์œ ๋Š” ๋ฐฐ์—ด์„ intํ˜•์œผ๋กœ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์— * 4byte๋ฅผ ํ•ด์ฃผ๋ฏ€๋กœ, ์ด 40 byte ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ int ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ ์ค˜์•ผ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ฐ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

* ๋ฉ”๋ชจ๋ฆฌ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

DATA ์˜์—ญ์€ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์ด๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ ๊นŒ์ง€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๋‚จ์•„์žˆ๋‹ค.

HEAP ์˜์—ญ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ์˜ํ•ด ํ• ๋‹น๋˜๊ณ  ํ•ด์ œ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋‹ค.

STACK ์˜์—ญ์€ ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๊ณ  ํ•จ์ˆ˜๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋ฉด ์ž๋™์œผ๋กœ ์†Œ๋ฉธ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ ์‹œ ์œ ์˜ํ•  ์ ์€ DATA ์˜์—ญ์— ํ• ๋‹นํ•  ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๊ณผ HEAP ์˜์—ญ์— ํ• ๋‹นํ•œ ๋™์  ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ๋์—์„œ ํ•ด์ œ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

 

DATA์˜์—ญ์— ํ• ๋‹นํ•œ ๋ณ€์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผ ์‹œ์— ํฌ๊ธฐ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์  ๋ฐฐ์—ด ์„ ์–ธ ์‹œ, ํฌ๊ธฐ๋ฅผ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ช…์‹œํ•˜๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

๋˜ํ•œ, HEAP ์˜์—ญ์— ํ• ๋‹นํ•œ ๋ณ€์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ์˜ํ•ด ํ• ๋‹น๋˜๊ณ  ์†Œ๋ฉธ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉ ํ›„, ํ•ด์ œ ์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋ง์ž!

 

728x90