Hello Nikolai,
Tuesday, January 19, 2010, 8:10:49 PM, you wrote:
NZ> 19.01.2010 17:49, JoshyFun ?????:
Show quoted text 5 lines
> var
> p: pchar;
> begin
> GetMem(p,10);
> inc(p,random(30));
NZ> Yes, this is among things which should probably be immediately NZ> disallowed at compile-time (as long as one wants reasonably safe NZ> pointers) because they are hard (or expensive) to validate later.
NZ> I usually try to not use raw pointer arithmetics and either use NZ> new/dispose with typed pointers or constructs like GetMem(X, NZ> SizeOf(X^)). However, compiler does not force me to do so.
Pointers and safe code is mutually exclusive, like managed code and fast execution, garbage collection and memory optimization, ...
In example this will work in some machines and crash in others:
GetMem(p,1024*1024*1024);
p^:=#0;
You can not detect it a compile time in any way.
Best regards,
JoshyFun