[fpc-devel] 019605: Safety check for "const s: string" (similar to Range or Overflow checks)
Martin
fpc at mfriebe.de
Fri Jun 24 00:41:48 CEST 2011
Another option would be to to the entire check, with a special memory
manager.
Let the memory manager, add a byte to each request (probably 4 bytes for
boundaries), and add a ref-counting like structure. This would only be
used by "const param" => const param can use this to mark the block of
memory (never mind if it is a string or elsewhat) as referenced =>
trying to free it, will cause an error
One could even add checksumming the memory...
Ok, probably to much...
On 23/06/2011 22:24, Martin wrote:
> On 23/06/2011 22:13, Florian Klämpfl wrote:
>> Am 23.06.2011 23:03, schrieb Martin:
>>> And what exactly does checkpointer check?
>> Check if the pointer points into a allocated memory block.
> Ok, that would actually work.
>
> even without keep_released it could catch quite some
>
> It should check, that it points to the correct place inside an
> allocated block (That is String^ := AllocAddr + SizeOf(StringLen) +
> SizeOf(StrRefCnt)
>
> It could even check, that the refcount is not zero.
> If the memory has not yet been reallocated, that should fail, if the
> string was released (assuming the last DecRefCnt, actually set's it to
> zero, before releasing the memory) (Would not work with -gt => since
> then all values are trashed)
>
> It would definitely be a good start.
>
> _______________________________________________
> 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