分类: C/C++
2011-02-24 23:42:44
1,
void getMemory(char *p, int num)
{
p=(char *)malloc(sizeof(char)*num);
}
void test(void)
{
char *str=NULL;
getMemory(str,100);//str仍然为NULL
strcpy(str,"hello");//运行错误
}
指针p的副本_p被重新分配内存,并且p未被free,造成内存泄漏。
2,
char *getString(void)
{
char p[]="hello world";
return p;
}
void test4(void)
{
char *str=NULL;
str=getString();//str的内容是垃圾
cout<
return返回栈内存,函数返回时会自动消亡,str内容是垃圾。
3,
char *p=(char *)malloc(100);
strcpy(p,"hello");
free(p);
if(p!=NULL)
{
cout<
strcpy(p,"world");//出错
cout<
}
指针p被free之后其地址不变,只是地址的内存为垃圾。必须设置p为NULL,避免成为野指针。