사용해보자.

 

// 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()
{

std::size_t bufferSize = 100 ;
char *pBuffer = new char[ bufferSize ] ;
...
Delete [] pBuffer ;

}

하지만 ... 이부분에서 예외가 발생한다면 pBuffer 는 메모리 누수가 발생할 것이다.
이런 예외가 한두어번에 그친다면 해당 예외가 발생할때에 " Delete [] pBuffer " 를 할수도 있겠으나
그 이상이 된다면 손이 아프게 Ctrl + C, V 를 해야 할 것이고 코드의 간결성도 놓쳐버릴 것이다.

그러나 std::vector< char > 를 쓴다면 이런 문제에서 해방될 수 있다.

void Function()
{

std::size_t bufferSize = 100 ;
std::vector< char > vecBuffer ;
vecBuffer.resize( bufferSize ) ;
....

}

위의 코드로 고친다면 ... 부분에서 예외가 생긴다고 해도 메모리 누수의 위험에서 해방될 수 있다.

[출처] std::vector< char > 로 임시 버퍼를 만들자.|작성자 대장장이

=============================================================================

+ Recent posts