该函数的两个参数内存上不能重叠。因为该函数在现代计算机的实现上要比我们想象的复杂,之所以这样是因为这个函数覆盖面很广,所以一点点效率的提升最终都会造成质的改变。比如cpu是多线程处理器时,程序会分配给不同核不同任务来进行字符串复制。所以如果内存上重叠则会出现问题。
char * dst = (char*) malloc (strlen(src)+1);
strcpy(dst,src);
分配内存时长度别忘了+1,给串的结尾留个’\0’的位置。
该函数的两个参数内存上不能重叠。因为该函数在现代计算机的实现上要比我们想象的复杂,之所以这样是因为这个函数覆盖面很广,所以一点点效率的提升最终都会造成质的改变。比如cpu是多线程处理器时,程序会分配给不同核不同任务来进行字符串复制。所以如果内存上重叠则会出现问题。
char * dst = (char*) malloc (strlen(src)+1);
strcpy(dst,src);
分配内存时长度别忘了+1,给串的结尾留个’\0’的位置。