好像在delphi5下指针操作运行时会弹出出错对话框,说是access非法的地址.但是
单步运行时却没问题,简单的例子如下,请教高手
var  w:string;
     p:pchar;
begin
    w:='hello the world';
    p:=pchar(w);
    p^:='F';
    showmessage(w);
end;

解决方案 »

  1.   

    p 实际指向的位置是32位保护模式下代码段,这在32位保护模式下是不能直接进行写操作的。因为 w := 'hello the world'; 这句编译器不会为 w 分配独立的空间你在调试的时候看看 CPU 窗口中的汇编指令就明白了
      

  2.   

    这是编译器弄的,因为编译器觉得没有必要为临时变量分配内存,把它放在代码段到时用完好一起Free。观察方法:你在 p^:='F'; 之前搞个断点,然后运行到这个断点看看 CPU 窗口:hello the world 这个字符串就在代码下面呢!