string str="abcdefg"; //***测试一 char * aa=new char[20]; memset(aa,0,20); memcpy(aa,&str[0],20); delete[] aa; //***测试二 int lg=str.length(); char *bb=new char[lg+1]; strcpy_s(bb,lg+1,str.c_str()); delete [] bb; //****测试三 int *pt=NULL; pt=(int*)malloc(sizeof(int)); *pt=100; free(pt); pt=NULL; //*****测试四 char *dest=NULL; if(dest==NULL) { dest=(char*)malloc(7*sizeof(char)); } strcpy(dest,"string"); free(dest); //****测试五 错误!!!! //char *aa="abcdefg"; //free(aa); //无法释放 // 原因 char * aa="abcdefg";这种写法没有申请内存。所以不需要delete。有new才有delete。 // char * aa="abcdefg";这种写法是非常不可取的。可以写成const char* aa = "abcdefg"; 这一块内存指向的区域无法修改值。如果改值就会崩溃。