var temp: pChar
begin
  GetMem(temp,Memo1.SelLength);
Memo1.GetSelTextBuf(temp,Memo1.SelLength+1);
ShowMessage(temp);
FreeMem(temp);
end;我认为上面的代码有问题应该给temp申请Memo1.SelLength+1内存空间
不知道我想法对不,
但是我用上面代码测试却可以通过,只要你在选择了文本就能成功.
不知道为什么
请各位大虾帮我解惑
谢谢!!

解决方案 »

  1.   

    GetMem只负责分配,并不负责越界检查
      

  2.   

    这需要你自己检查,很有可能Memo1.SelLength+1的区域被别的程序和变量使用。那就容易出问题了
      

  3.   

    你这个跟GetMem没有任何关系.其实你是在超支内存.这样子做只会扰乱temp后续的那一个字节内存,你只是为自己埋下一个地雷.万一哪一个线程被分配到那个字节,并且在上面那个GetSelTextBuf之前进行过初始化,而又在其后才使用...你就等着花大代价去查找问题吧...