해결된 질문
작성
·
310
0
필수실습문제 MyStrcpy() 함수 작성하기 에서
void MyStrcpy(char* pszDst, int nSize, char* pszSrc) {
size_t nLenSrc = 0;
nLenSrc = strlen(pszSrc);
for (int i = 0; i < nLenSrc; ++i) pszDst[i] = pszSrc[i];
}
로 함수를 정의하셨는데 이럴경우에 매개변수로 들어간 nSize는 함수에서 어떤 의미가 있는건가요...?
답변 1
0
코드에는 반영되지 않았으나 예외처리를 하기 위해서 입니다. pszDst가 가리키는 메모리 영역에서 가용한 바이트 단위 길이가 nSize 입니다. 만일 pszSrc의 길이가 nSize보다 크다면 pszDst가 가리키는 메모리 범위를 넘어선 쓰기가 발생합니다.
포인터의 가장 큰 문제는 가리키는 대상에 대한 정보가 부족하다는 것입니다. 특히 가용 메모리의 크기를 알 수 없다는 것이 문제입니다. 이러한 문제를 해결하려면 기본적으로 대상 메모리의 가용 크기를 별도로 받는 것 외에 대안이 없습니다. 참고하시기 바랍니다. :)