[๋๋ฒ๊น ] ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ๊ฒํ๋ ๋ฐฉ๋ฒ - ์์ ๊ด๋ฆฌ์
๋ฉ๋ชจ๋ฆฌ ๋์์ ๊ด๋ จ๋ ํฌ์คํ ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
[๋๋ฒ๊น ] ๋ฉ๋ชจ๋ฆฌ ๋์์ ์ ๊ฒํ๋ ๋ฐฉ๋ฒ ์๊ฐ
์๊ฐ
์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๊ฐ๋จํ๊ฒ ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฐ๋ก ์๋์ฐ์์ ์ ๊ณตํ๋ ์์
๊ด๋ฆฌ์(Task manager)
์
๋๋ค. ๋ณดํต ์์
๊ด๋ฆฌ์๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด ๋จนํต์ด ๋์์ ๋ ์ข
๋ฃํ๊ธฐ ์ํด ๋ง์ด ์ฌ์ฉํ์ ๊ฑฐ๋ผ ์๊ฐ๋ฉ๋๋ค. ํ์ง๋ง ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ ๊ฒ ์ฉ์ผ๋ก๋ ์ฌ์ฉ๋ ์ ์๋ ์ ์ ์ด๋ฒ ํฌ์คํ
์ ํตํด ์๊ฐํ๊ฒ ์ต๋๋ค.
์์ ๊ด๋ฆฌ์์ ๋ฉ๋ชจ๋ฆฌ ์ต์
์์
๊ด๋ฆฌ์์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ด๋ จ ์ต์
์ ์ค๋ช
ํ๊ฒ ์ต๋๋ค. ์ฐ์ ์์
๊ด๋ฆฌ์๋ฅผ ์คํํ๊ณ , ์ธ๋ถ ์ ๋ณด
๋ฉ๋ด๋ฅผ ํด๋ฆญํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฆฌ์คํธ ๋ทฐ์ ํค๋ ๋ถ๋ถ์ ๋ง์ฐ์ค ์ฐ ํด๋ฆญ ํ ์ด ์ ํ
์ ํด๋ฆญํฉ๋๋ค. ์ค๋ฅธ์ชฝ ์ฐฝ๊ณผ ๊ฐ์ด ์ด ์ ํ ์ต์
์ด ํ์๋ฉ๋๋ค.
๊ฐ๋จํ ๋ช ๊ฐ์ง ์ต์ ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ต์ | ์ค๋ช |
์์ ์งํฉ(๋ฉ๋ชจ๋ฆฌ) | ๊ฐ์ธ ์์ ์งํฉ์ ๋ฉ๋ชจ๋ฆฌ ์๊ณผ ํ๋ก์ธ์ค์์ ์ฌ์ฉ ์ค์ด๋ฉฐ ๊ณต์ ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ํ ๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ ์ฒด ์ฌ์ฉ ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ฏธํฉ๋๋ค. |
์ต๊ณ ์์ ์งํฉ(๋ฉ๋ชจ๋ฆฌ) | ์ฌ์ฉํ๋ ์์ ์งํฉ ์ค ์ต๋ ์น๋ฅผ ํ์ํฉ๋๋ค. |
์์ ์งํฉ ๋ธํ(๋ฉ๋ชจ๋ฆฌ) | ์์ ์งํฉ ๋ฉ๋ชจ๋ฆฌ์ ๋ณํ๋์ ํ์ํฉ๋๋ค. |
๋ฉ๋ชจ๋ฆฌ(๊ฐ์ธ ์์ ์งํฉ) | ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ํ์ํฉ๋๋ค. |
์ค์ต
์ง๊ธ๊น์ง, ์์ ๊ด๋ฆฌ์์์ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ ๊ฒํ ์ ์๋ ์ต์ ์ ์์๋ณด์์ต๋๋ค. ์ด์ ์ค์ต์ ํตํด ์ค์ ์ด๋ป๊ฒ ํ์๋๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค. ์์ ๋ฅผ ์ํด MFC Dialog ํ๋ก์ ํธ ์์ฑ ํ ๋ฒํผ ๋ ๊ฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
xxxDlg Class์ ๋ฉค๋ฒ ๋ณ์๋ก std::vector
<
byte*
>
m_vBuffers
๋ฅผ ์ ์ธํฉ๋๋ค.
#include <vector>
class CMFCApplication1Dlg : public CDialogEx
{
// ...
std::vector<byte*> m_vBuffers;
// ...
}
Alloc ๋ฒํผ์๋ ์๋์ ๊ฐ์ด ๊ตฌํํฉ๋๋ค. ๋ฒํผ์ ํด๋ฆญํ๋ฉด 1MByte๊ฐ ํ ๋น๋ฉ๋๋ค.
void CMFCApplication1Dlg::OnBnClickedButtonAlloc()
{
m_vBuffers.push_back(new byte[1024 * 1024]);
}
Free ๋ฒํผ์๋ ์๋์ ๊ฐ์ด ๊ตฌํํฉ๋๋ค.
void CMFCApplication1Dlg::OnBnClickedButtonFree()
{
if (m_vBuffers.size() == 0)
return;
std::vector<byte*>::iterator it = m_vBuffers.begin();
delete[] *it;
*it = nullptr;
m_vBuffers.erase(it);
}
์ด์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ์์
๊ด๋ฆฌ์์์ ๋ฉ๋ชจ๋ฆฌ ์์ ํ์ธํ๊ฒ ์ต๋๋ค. ํ๋ก๊ทธ๋จ ์คํ ํ ์์
์งํฉ
์ 15,460KB์์ต๋๋ค. Alloc ๋ฒํผ ํด๋ฆญ ํ 1,040KB๊ฐ ์ฆ๊ฐํ์ผ๋ฉฐ, ์์
์งํฉ
๋ฐ ์ต๊ณ ์์
์งํฉ
๋ฉ๋ชจ๋ฆฌ ์์ 16,440KB๊ฐ ๋์ต๋๋ค.
์ด๋ฒ์ ๋ฐ๋๋ก Free ๋ฒํผ์ ํด๋ฆญํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ก 1,024KB๊ฐ ๊ฐ์ํ๊ณ , ์์
์งํฉ
์ 15,320KB๊ฐ ๋์ต๋๋ค. ํ์ง๋ง ์ต๊ณ ์์
์งํฉ
์ ์ฌ์ ํ 16,440KB๋ฅผ ํ์ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ฑ๊ณผ ํด์ ํ ์์
์งํฉ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ํ์๋์ด ์ ํํ์ง๋ ์์ต๋๋ค. ์ด์ ํฌ์คํ
์์ ํ์ธํ ๊ฒฐ๊ณผ, ํจ์ ํธ์ถ ์ ์ฌ์ฉ์์ ๋์ ํ ๋น ์ธ์๋ Windows API ๋ด์์ ๋ฉ๋ชจ๋ฆฌ ์์ฑ์ผ๋ก ์ค์ฐจ๊ฐ ์๊ธฐ๋ ๊ฒ์ ์๊ฒ ๋์ต๋๋ค.
[๋๋ฒ๊น
] ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ๊ฒํ๋ ๋ฐฉ๋ฒ - ์ฑ๋ฅ ํ๋กํ์ผ๋ฌ
๊ฒฐ๋ก
์์
๊ด๋ฆฌ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํ์ ์ต์
์ค ์์
์งํฉ
๊ณผ ์ต๊ณ ์์
์งํฉ
์ ๋ชจ๋ํฐ๋งํ์ฌ, ๋ฉ๋ชจ๋ฆฌ์ ํ์ฌ ์ฌ์ฉ๋๊ณผ ์ต๊ณ ์ฌ์ฉ๋ ์ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ณ๋์ ๋ชจ๋ํฐ๋ง ํ๋ก๊ทธ๋จ์ ๊ตฌํํ์ฌ, ์ผ์ ํ ์ฃผ๊ธฐ๋ก ํน์ ํ๋ก์ธ์ค์ ์์
์งํฉ
๊ณผ ์ต๊ณ ์์
์งํฉ
์ ๊ธฐ๋กํ๋ค๋ฉด, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ผ์ ํ์ง ๋๋ ์์ํ ์ฆ๊ฐํ๋์ง ์ ์ ์์ ๊ฒ์
๋๋ค.
'Programming > Debugging' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[๋๋ฒ๊น ] Visual Studio C# ์๊ฒฉ ๋๋ฒ๊น (Remote Debugging) ์ฌ์ฉ ๋ฐฉ๋ฒ
[๋๋ฒ๊น ] Visual Studio C# ์๊ฒฉ ๋๋ฒ๊น (Remote Debugging) ์ฌ์ฉ ๋ฐฉ๋ฒ
2022.06.03 -
[๋๋ฒ๊น ] Visual Studio 2015 MFC ์๊ฒฉ ๋๋ฒ๊น (Remote Debugging)ํ๊ธฐ!
[๋๋ฒ๊น ] Visual Studio 2015 MFC ์๊ฒฉ ๋๋ฒ๊น (Remote Debugging)ํ๊ธฐ!
2020.07.16 -
[๋๋ฒ๊น ] ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ๊ฒํ๋ ๋ฐฉ๋ฒ - ์ฑ๋ฅ ํ๋กํ์ผ๋ฌ
[๋๋ฒ๊น ] ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ๊ฒํ๋ ๋ฐฉ๋ฒ - ์ฑ๋ฅ ํ๋กํ์ผ๋ฌ
2020.04.17 -
[๋๋ฒ๊น ] ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ๊ฒํ๋ ๋ฐฉ๋ฒ - CRTDBG Snapshot(์์ ํฌํจ)
[๋๋ฒ๊น ] ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ๊ฒํ๋ ๋ฐฉ๋ฒ - CRTDBG Snapshot(์์ ํฌํจ)
2020.04.14