函数定义如下:
char* CLogs::GetData()
{
char* date = new char[20];
/*赋值操作*/ return date;
}外部调用时:
char* Data = GetData();因为有分配内存,但没有相应的delete,所以会有提示内存泄漏。请问这种情况下,这个内存空间应该如何释放?
char* CLogs::GetData()
{
char* date = new char[20];
/*赋值操作*/ return date;
}外部调用时:
char* Data = GetData();因为有分配内存,但没有相应的delete,所以会有提示内存泄漏。请问这种情况下,这个内存空间应该如何释放?
void CLogs::GetData( char *data )
{
data = new char[20];
....
}
{
*data = new char[20];
....
}调用的时候这样用:
char * data;
GetData( &data );
......
delete[] data;
void CLogs::GetData( char **data )
{
*data = new char[20];
....
}
================================================================
tufaqing() :
不要返回局部变量的指针和引用,会出现不定的内存错误,推荐这样写:
void CLogs::GetData( char *data )
{
data = new char[20];
....
}这一条规则在这里不适用,用new分配的内存空间可以用指针返回。
或者void CLogs::GetData(string & s);当然第一种可能要多出一次以上字符串拷贝,所以如果数据量大或者性能比较重要就用第二种