보통 메모리를 할당 받게 되면은 아무것도 저장되지 않은 깨끗한 자리를 할당받는게 아닙니다.
이미 다른 핸들러에 의해서 사용(저장)되었던 쓰레기 값들이 들어있지요.
그리고 Char어레이를 사용하는 경우는 대게 문자열을 다루는데에 목적이 있으므로 널 값으로 할당된 메모리를 가득 채우는 겁니다.
안 그럼 문자열 함수 사용할 때에 바로 Access Violation 에러가 뜰겁니다.
왜냐하면 문자열 함수는 시작 주소로 부터 널값을 찾아 계속 이동하기때문이죠..
그래서 결국 엉뚱한 메모리 영역을 침범하게 되고 델파이는 바로 Access Violation 에러를 내보내게 됩니다.
때문에 FillChar를 사용하여 널값으로 채워놓는 것이죠..널값찾아 삼만리 하지 말라고..^^
안녕하세요 초보델파이 프로그래머입니다 ^^; 델파이에 있는 fillchar example인데요, var S: array[0..79] of char; begin { Set to all spaces } FillChar(S, SizeOf(S), #0); end; fillchar가 왜필요한지, 세번째로 오는 #0은 뭘 뜻하...
신현빈
•
2002.05.03 22:22
보통 메모리를 할당 받게 되면은 아무것도 저장되지 않은 깨끗한 자리를 할당받는게 아닙니다.
이미 다른 ...
KDDG_RepleMan
•
2002.05.02 21:25
아래와 같은 내용입니다.
var
S: array[0..79] of char;
begin
{ Set to ...
강형철
•
2002.05.03 00:16
잘못된 부분이 있네요?
FillChar( S, SizeOf(S), ' ' ); 이부분이 잘못되었군요...
이건 ...
리플맨
•
2002.05.03 00:34
아 ~하 그렇군요. 확인해보지 않아서.... 죄송~~~
델파이4의 help에 있는 내용을 그대로 복사한 건데....
이미 다른 핸들러에 의해서 사용(저장)되었던 쓰레기 값들이 들어있지요.
그리고 Char어레이를 사용하는 경우는 대게 문자열을 다루는데에 목적이 있으므로 널 값으로 할당된 메모리를 가득 채우는 겁니다.
안 그럼 문자열 함수 사용할 때에 바로 Access Violation 에러가 뜰겁니다.
왜냐하면 문자열 함수는 시작 주소로 부터 널값을 찾아 계속 이동하기때문이죠..
그래서 결국 엉뚱한 메모리 영역을 침범하게 되고 델파이는 바로 Access Violation 에러를 내보내게 됩니다.
때문에 FillChar를 사용하여 널값으로 채워놓는 것이죠..널값찾아 삼만리 하지 말라고..^^
참고로 문자열의 끝을 의미하는 널 값을 델파이에선 #0로 표현합니다.