以下是引用TonyDeng在2013-4-1 17:30:07的发言:
C/C++的字符串就是字符数组,一经创建,其空间就不能改变,如果要改变空间尺寸,则需要另外找内存把原来的数据复制过去,这是C/C++数组的基本特征,即使是C#的字符串string,也是这样的(C#中的string,对内存作任何改变,实际上都是重新创建的新字符串)。你可以申请预留较大的数组空间,但绝不可以临时增减这个空间的容量了。即使用动态申请内存malloc()建立数组,也同样是不能改变这块内存的大小,有人以为realloc()可以改变这块内存的大小,是极大的误区,这个函数实际上操作的是另外开辟一块内存然后把原来的数据复制过去,再把新内存的指针返回,这样,新指针和旧指针的值是不一样的,那样爱用指针的程序员就很容易死翘翘,因为它会以为那是同一块内存——这也是后来很多语言禁用指针的原因,新的C/C++语法都有自动跟踪地址变化的智能指针,不再是现在大家所看到的那样。
我顺带提一嘴
智能指针也不能解决所有的问题...
我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...