读书人

一道C++笔试题解决方法

发布时间: 2012-03-04 11:13:33 作者: rapoo

一道C++笔试题
指出下面程序的错误:
#include <iostream>
#include <string.h>
using namespace std;
class mystring
{
public:

char* pdata;
mystring(int len)
{
pdata = new char(len);
}
};

void fun(mystring** array, int len)
{
mystring* old = *array;
*array = new mystring(2*len);
memcpy(*array, old, len);
delete old;
}

int main()
{
mystring str(20);
mystring* pstr = &str;
mystring** ppstr = &pstr;
strcpy(str.pdata, "hello, andylin");
fun(ppstr, 20);
return 0;
}

指点一下~

[解决办法]

C/C++ code
class mystring { public:    char* pdata;  mystring(int len)  {   pdata = new char[len+1];  }  ~mystring() {     if (pdata)     {         delete []pdata;     } }}; //*array需要你手动去释放void fun(mystring** array, int len) {     mystring* old = *array;     *array = new mystring(2*len);     memcpy(*array, old, len);     //old指向的str,是栈上的,不能delete    //delete old; } int main() {  mystring str(20);  mystring* pstr = &str;  mystring** ppstr = &pstr;  strcpy(str.pdata, "hello, andylin");  fun(ppstr, 20);  return 0; } 

读书人网 >C++

热点推荐