|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近在仔细的看字符串,有很多纠结的问题,感觉基础太差了,故来讨教,望知情人士不吝赐教,感激不尽;
问题如下
1 AnsiString ShortString WideString在内存中的分配...
(1) 给AnsiString类型变量分配小于256字节的内存,此时:AnString是不是可以理解为类似ShortString了呢(此时这段字符串的0位保存的是这短字符串的长度)?
(2) 说到了AnsiString和WideString是生存期管理类型,即(0bject Pascal自动为他们分配内存和释放内存),由此联想到他类型,比如整型 实型这样的数,我声明了之后也没有对他进行内存的分配和释放,难道这也可以理解为生存期管理类型么?;
(3)AnsiString 中说到引用计数,比如声明两个string类型S1,S2;给s1赋值(此时s1的引用计数为1);然后将s1赋值给s2(此时s1的引用计数为2);最后令S2:=s2 + 'sljflsdf';(此时s1的引用计数为1); 我所理解的是这样的:第一步给s1赋值时就是说s1引用了这个地址一次 ,引用计数记为1,第二步,将s1赋给s2,s2也引用了这个地址,加起来s1的这个地址被引用了两次,故引用计数记为2第三步,s2变为了另外一个字符串,不再引用s1的地址了,所以s1的引用计数应该减去1变为1了.不知道这样理解对不对;
2,我分别声明了三个类型的变量 str[5] shortstring string并赋值为15.20.21个长度的字符串 用sizeof length strlen三个函数去求他们的值,得出了不同的结果,这里我晕了,sizeof求的是内存大小啊?length求的是内存中字符串的长度? 最后对这个strlen的用法和作用不太会,有会的指教下啊..
在线等待中,望大家踊跃讨论啊...:time: |
|