我在delphi 中这样写:
var
initcode:pchar;
GetMem(initCode,3);
ZeroMemory(initCode,3);
initcode := #$0D#$1B#$40;为什么执行以后 在调试信息中看到的initcode 值确是:#$D#$1B'@'
请大家帮忙看下,这个问题是出在哪里了???搞了好久也没有找到原因。
分数不多了,全给了啊。

解决方案 »

  1.   


      GetMem(initCode,3); 
      ZeroMemory(initCode,3); 
      initcode := #$0D#$1B#$40;第一句:给initCode分配了3bytes,地址为@A(根据fastmm4的一般经验,@A=$7e**????)
    第二句:initCode(@A)指向的3bytes内容清0
    第三句:让initCode指向一个字符串常量,该常量的地址为@B(pe文件的code段或data段,如未修改linker的image base选项,@B=$004*????),内容为 #$0D#$1B#$40#0(也就是#$D#$1B'@'#0,字符串结尾不会显示)这时,initCode的地址为@B,前面分配的3bytes(@A)就白分配了,产生了内存泄露
      

  2.   

    自己已经解决了,估计是delphi 2007 的显示问题吧。