void getmemory(char **p,int num) { *p=(char *)malloc(num); } main() { char *str=NULL; getmemory(&str1,100); strcpy(str,"hello\n"); printf(str); //free(str); } 1.这样会引起内存泄露,原因是什么?是不是没有free(str) ? 2.指针中能保存的只有地址 但是我把字符串直接赋给了指针 却没出错 请问会引起怎样的不可测的危险? 如果指针中保存的是那段字符串的地址,那么那段字符串是存储在哪里的? 还是说指针中保存的是字符串的内容? 你们的意思是字符串可以直接赋给指针? 但是我那样做后再用free释放内存就会程序崩溃,为什么? 到底字符串能不能直接赋给指针呢? 回ryw12403 : 有无free都不会出错,但是会引起内存泄露 这是潜在的危险 有可能引发未知的错误 char *p; p=(char *)malloc(sizeof(p)*10); p="sdsf"; free(p); 运行后程序崩溃 是不是p="sdsf"; 不能这样赋值? 但是去掉free不会出错