인프런 커뮤니티 질문&답변

이용민님의 프로필 이미지
이용민

작성한 질문수

독하게 시작하는 C 프로그래밍

[필수 실습 문제] MyStrcpy() 함수 작성하기

필수실습문제 MyStrcpy() 함수 작성하기 에서 질문있습니다.

해결된 질문

작성

·

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가 가리키는 메모리 범위를 넘어선 쓰기가 발생합니다.

포인터의 가장 큰 문제는 가리키는 대상에 대한 정보가 부족하다는 것입니다. 특히 가용 메모리의 크기를 알 수 없다는 것이 문제입니다. 이러한 문제를 해결하려면 기본적으로 대상 메모리의 가용 크기를 별도로 받는 것 외에 대안이 없습니다. 참고하시기 바랍니다. :)

이용민님의 프로필 이미지
이용민

작성한 질문수

질문하기