[fpc-devel] 019605: Safety check for "const s: string" (similar to Range or Overflow checks)
Florian Klämpfl
florian at freepascal.org
Thu Jun 23 23:13:11 CEST 2011
Am 23.06.2011 23:03, schrieb Martin:
> And what exactly does checkpointer check?
Check if the pointer points into a allocated memory block.
Combined with heaptrc.keep_released:=true, this is a very powerful check
and even more if heaptrc is compiled with FPC_HEAPTRC_EXTRA. Downside is
a slight slow down and a heavily increased memory consumption because
keep_released:=true forces the heap manager never to reused a used
memory block so checkpointer finds any dangling pointer. But I think it
finds almost all pointer related problems.
With the default settings (keep_released:=false) it gets not all of them
because a memory block might be already reallocated and the pointer
might look valid.
I propose this because my standard procedure if something strange
happens and I suspect heap corruption and pointer problemes:
- compile with -gh
- use keep_released:=true
- use a heaptrc unit compiled with FPC_HEAPTRC_EXTRA
>
> That s is not nil ? => s will never be nil. If something goes wrong, s
> points to memory of which nothing is known (could be unallocated, could
> be allocated by something else)
Not with heaptrc.keep_released:=true
>
> On 23/06/2011 21:37, Florian Klämpfl wrote:
>> Am 23.06.2011 22:36, schrieb Martin:
>>>> procedure Foo(const s: string);
>>>> begin
>>>> proc;
>>> I assume the below is supposed to be the hidden / automatic check?
>> Yes.
>>
>>> (since the above was the unwarranted change to s)
>>>
>>> But what does it test (besides from being an assignment?
>> This is only to demonstrate that checkpointer detects the error.
>> _______________________________________________
>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
More information about the fpc-devel
mailing list