首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-04 
一道C++笔试题指出下面程序的错误:#include iostream#include string.husing namespace stdclass mys

一道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; } 

热点排行