델파이(Delphi)는 기본적으로 포인터 연산을 제한하는 언어입니다. 다시 말해, C/C++처럼 포인터에 산술 연산(++, --, +, - 등)을 자유롭게 하는 기능은 지원하지 않습니다. 하지만 포인터 자체는 존재하며, 특정 경우에는 우회적으로 포인터 연산과 유사한 작업을 할 수 있습니다.
✅ 델파이에서 가능한 포인터 관련 기능
^ 연산자로 포인터 역참조 가능
@ 연산자로 변수의 주소 얻기
PByte, PInteger, Pointer 등의 타입 존재
Inc/Dec 프로시저로 포인터 이동 가능
예시:
var p: PByte; begin GetMem(p, 10); // 10바이트 할당 p^ := 123; // 첫 바이트에 값 대입 Inc(p); // 다음 바이트로 이동 (C의 p++) p^ := 124; // 두 번째 바이트에 값 대입 Dec(p); // 이전 바이트로 이동 FreeMem(p); // 메모리 해제 end;
❌ 안 되는 것 (C와의 차이)
p++; // C에서 가능 p = p + 1; // C에서 가능
델파이에서는 위처럼 직접 포인터 산술은 안 되며, Inc(p, N) 또는 Dec(p, N)을 써야 합니다.
✅ 참고: 포인터를 배열처럼 쓰기
var p: PByte; begin GetMem(p, 10); p[0] := 1; p[1] := 2; FreeMem(p); end;
이처럼 PByte, PChar 등은 배열 인덱싱으로도 접근할 수 있습니다.
✅ 요약
기능델파이 지원 여부대안포인터 사용✅^, @, Pointer 등포인터 역참조✅p^포인터 산술❌Inc, Dec 사용배열처럼 인덱스 접근✅p[0], p[1] 등포인터 타입 변환✅Pointer(p) 캐스팅 등
필요하면 델파이에서 unsafe한 포인터 작업하는 예제도 더 드릴 수 있어요.
포인터 있는데 왜 메모리안전이라지?
"도둑은 집을 떠나며 주인을 욕한다" - 러시아 속담
40년전 미국 빌보드 5주 연속 1위한 한국 노래
https://youtube.com/shorts/MhPKOQiOOQI?
40년전 미국 빌보드 5주 연속 1위한 한국 노래
https://youtube.com/shorts/MhPKOQiOOQI?
댓글 0