사용해보자.
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
std::vector<int> anVector;
CArray<int> ary;
for(int i=0; i<10; i++)
{
anVector.push_back(i+1);
ary.InsertAt(i, i*10);
}
CString strbuf;
size_t ns = anVector.size();
size_t ns2 = ary.GetSize();
strbuf.Format("vector/Ary Count: %02d, %02d\r\n", ns, ns2);
m_editOutput.ReplaceSel(strbuf);
for(int i=0; i<ns; i++)
{
strbuf.Format("%02d, Data: %02d, %02d\r\n", i+1, anVector[i], ary[i]);
m_editOutput.ReplaceSel(strbuf);
}
그리고 Vector 동적 할당 방법은 아래에서 발췌했다.
=============================================================================
이전까지는 임시로 동적 크기의 버퍼를 생성할 때 보통 아래처럼 작성했었다.
void Function()
{
}
하지만 ... 이부분에서 예외가 발생한다면 pBuffer 는 메모리 누수가 발생할 것이다.
이런 예외가 한두어번에 그친다면 해당 예외가 발생할때에 " Delete [] pBuffer " 를 할수도 있겠으나
그 이상이 된다면 손이 아프게 Ctrl + C, V 를 해야 할 것이고 코드의 간결성도 놓쳐버릴 것이다.
그러나 std::vector< char > 를 쓴다면 이런 문제에서 해방될 수 있다.
void Function()
{
std::vector< char > vecBuffer ;
vecBuffer.resize( bufferSize ) ;
}
위의 코드로 고친다면 ... 부분에서 예외가 생긴다고 해도 메모리 누수의 위험에서 해방될 수 있다.
[출처] std::vector< char > 로 임시 버퍼를 만들자.|작성자 대장장이
=============================================================================
'프로그래밍 > VC++ 개발 코딩' 카테고리의 다른 글
#pragma pack(push, 1), #pragma pack(pop) (0) | 2014.01.17 |
---|---|
[링크스크랩] [C / C++]12장. union(공용체)와 BitField (0) | 2014.01.17 |
이중포인터 쓰고 지우기 (0) | 2014.01.17 |
fstream (ifstream, ofstream) (0) | 2014.01.17 |
Make file for window (0) | 2014.01.17 |