(I use FPC's SDL units, so it's barely different)

You shouldn't (AFAIK) need to create or free a rect.
[pascal]
procedure useless;
var
r: TSDL_Rect;
begin
r.x := 0;
r.y := 0;
r.w := 100;
r.h := 100;
SDL_BlitSurface(img,nil,scr,@r);
end;
[/pascal]
Keep in mind I haven't actually checked for memory leaks this way but even the C++ SDL tutorials on the internet don't seem to bother creating or freeing the rects.