char* str = "hello";
int length = strlen(str);
//动态分配内存空间;适当位置if(spy_str!=NULL) free(spy_str);spy_str=NULL;
char* spy_str = NULL;
spy_str = (char*)malloc((length + 1)*sizeof(char));//使用strcpy长度加1必须;
//静态分配内存空间,c++ []={0}更严谨,(strcat需要制0)。既然叫他静态也无需free();
char spy_str2[64] = {0};//使用memcpy长度不用加1。//delete[] spy_str2;这种声明类似常量静态,无法删除。
//改用char* spy_str2=new char[64]可以delete[]
strcpy(spy_str2, str);
strcpy(spy_str, str);
/*free(spy_str); spy_str = NULL;*///这里free后,在使用spy_str会出问题,因为找不到内存。改用memset
memset(spy_str, 0, length);
strcpy(spy_str, spy_str2);
if (spy_str != NULL) free(spy_str); spy_str = NULL;
导致程序崩溃的原因是使用了静态内存开辟空间后还要强行delete。