全部博文(245)
分类: C/C++
2009-04-10 20:34:18
|
p为字符串指针,写成name=new char(strlen(p)+1);
strlen(p)返回字符串长度,这样strlen(p)+1就是一个数字,而数字和字符对与编译器来说是一样的,所以new char(strlen(p)+1)实质是申请了一个int大小的空间,后边strcpy(name,p);实质是将一段字符串复制到一个int大小的空间,而这个空间肯定是容不下这个字符串,而此时内存中相邻的字段没有被其他进程占用,而发生越界复制,而在退出时,delete时,会销毁内存,而一部分内存不属于本进程,而发生段错误。
如果写成name=new char[strlen(p)+1];就告诉编译器申请空间的内型是char 而申请的大小是strlen(p)+1, 错误的主要原因还是没有熟练c++,新手啊,才学了2天。加油