比如,我定义 CString str[100];
那么在内存中其实是分配了 100 个 指针,指向这100地址,
然后,对str 进行初化化,填入字符, (小于0x40),发现CString 给他都发配了 0x40 大小,因为str[0] str[1] 是相差0x40的
然后.我 一直
for (int i=0;i<10;i++)
{
str[i]+="dddddddddddddddddddddddddddd";
}
这样,很快,str[0].就超过了0x40,如果这时候指针还指向原来的地址,
此时,肯定会湮没掉str[1], 不过CString 自己会操作这些,将指针指到另一个地址,(应该是新申请了空间)
//第一次分配.这是前 8 个
0040311C 68 40 03 00 B8 40 03 00 08 41 03 00 58 41 03 00 h@.窣.A.XA.
0040312C A8 41 03 00 F8 41 03 00 48 42 03 00 98 42 03 00 ˋ.鳤.HB.楤.
//数据超过0x40后,分配了新地址
0040311C BC B3 03 00 BC B6 03 00 BC B9 03 00 BC BC 03 00 汲.级.脊.技.
0040312C E4 C8 C2 00 64 9F 03 00 64 A2 03 00 64 A5 03 00 淙?d?.d?.d?.
在这样看着,这个CString 是很安全的,
不知道CString 作数组时,有没有特别的要注意安全的?因为最近我写的个程序,经验内存出错,
我觉得可能是与 这个有关,比如: 在线程中,的 CString 数组之类的
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课