char*GetString(void)
{
char p[]= “hello world”;
return p; //编译器一般将提出警告信息
}
void main(void)
{
char *str = NULL;
str = GetString();//str 的内容是垃圾,得不到想要的内容
count<< str<<end;
}
在函数GetString()中定义的变量p属于local(局部变量),当函数结束时自动消失,所以在返回时,根本就得不到P所指的内容。解决办法有以下几种:(可能还有很多方法,不过这里只是最常见的几中,也是最能体表现程序中内存使用的情况。)
主要的两种方法:
(1)可以使用全局数组。使用全局变量时,在程序结束时才释放。
(2)在函数GetString()中使用new在堆上动态分配内存来建立数组。C语言中可以使用malloc()函数。不过不要忘记了,在使用完后要进行内存的释放,不然会造成内存的泄漏。分别用delete,free()释放。使用delete时,会调用类的析构函数,而free则不会。