아하
생활

생활꿀팁

지적인웜뱃3
지적인웜뱃3

C++ MFC 메모리 관리 질문드립니다.

안녕하세요

MFC 프로그램 중 메모리 관리에 관해 질문좀드립니다.

1. double* dDouble = new double; //new 더블형 생성

2. pData->Array.Add((double*)dDouble); //CPtArray 배열에 더블값 데이터 추가.

3. double dDouble1 = (double)pData->Array.GetAt(0); // 배열에 첫번째 값 가져와서 더블1 사용.

4. dDouble1값 사용.

5. pData->Array.RemoveAt(0); // 배열 첫번째값 삭제

6. delete dDouble1; //new 메모리 삭제

위처럼 사용할시 1,2번은 계속 누적식으로 사용하여 데이터를 여러개 저장합니다.

그리고 3,4,5,6번처럼 배열에값 사용후 삭제해주는데 비쥬얼스튜디오로 메모리 힙사용 찍어보면

Array배열에 메모리가 증가하는것같습니다.

보통 Array.RemoveAll();

Array.FreeExtra();

배열 전체데이터를 삭제할때는 위처럼 extra()를 사용하여 메모리를 비워주는데

RemoveAt으로 하나씩 꺼낼때도 FreeExtra를 사용해주어야하나요?

위내용중 잘못된부분 피드백좀 부탁드려요.

선배님들의 답변 기다립니다.


55글자 더 채워주세요.
1개의 답변이 있어요!
  • 보랏빛수염고래51
    보랏빛수염고래51
    1. double* dDouble = new double; //new 더블형 생성 2. pData->Array.Add((double*)dDouble); //CPtArray 배열에 더블값 데이터 추가. 3. double dDouble1 = (double)pData->Array.GetAt(0); // 배열에 첫번째 값 가져와서 더블1 사용. 4. dDouble1값 사용. 5. pData->Array.RemoveAt(0); // 배열 첫번째값 삭제 6. delete dDouble1; //new 메모리 삭제

    여기서,

    double* dDouble = new double;

    이렇게 메모리를 생성했으면 같은 주소를

    del dDouble

    해제를 시켜줘야됩니다.

    같은 주소인지 파악하시면 어떤 걸 해제시켜줘야 되는지 확인되실 꺼에요.