[λλ²κΉ ] λ©λͺ¨λ¦¬ λμλ₯Ό μ κ²νλ λ°©λ² - μμ κ΄λ¦¬μ
λ©λͺ¨λ¦¬ λμμ κ΄λ ¨λ ν¬μ€ν μ μλ λ§ν¬λ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ.
[λλ²κΉ ] λ©λͺ¨λ¦¬ λμμ μ κ²νλ λ°©λ² μκ°
μκ°
μ€ν μ€μΈ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬ λμλ₯Ό κ°λ¨νκ² νμΈνλ λ°©λ²μ΄ μμ΅λλ€. λ°λ‘ μλμ°μμ μ 곡νλ μμ
κ΄λ¦¬μ(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 λ΄μμ λ©λͺ¨λ¦¬ μμ±μΌλ‘ μ€μ°¨κ° μκΈ°λ κ²μ μκ² λμ΅λλ€.
[λλ²κΉ
] λ©λͺ¨λ¦¬ λμλ₯Ό μ κ²νλ λ°©λ² - μ±λ₯ νλ‘νμΌλ¬
κ²°λ‘
μμ
κ΄λ¦¬μμ λ©λͺ¨λ¦¬ μ¬μ©λ νμ μ΅μ
μ€ μμ
μ§ν©
κ³Ό μ΅κ³ μμ
μ§ν©
μ λͺ¨λν°λ§νμ¬, λ©λͺ¨λ¦¬μ νμ¬ μ¬μ©λκ³Ό μ΅κ³ μ¬μ©λ μ κ²μ΄ κ°λ₯ν©λλ€. λ³λμ λͺ¨λν°λ§ νλ‘κ·Έλ¨μ ꡬννμ¬, μΌμ ν μ£ΌκΈ°λ‘ νΉμ νλ‘μΈμ€μ μμ
μ§ν©
κ³Ό μ΅κ³ μμ
μ§ν©
μ κΈ°λ‘νλ€λ©΄, λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μΌμ νμ§ λλ μμν μ¦κ°νλμ§ μ μ μμ κ²μ
λλ€.