永发信息网

C++ new问题

答案:1  悬赏:80  手机版
解决时间 2021-06-06 15:09
  • 提问者网友:人傍凄凉立暮秋
  • 2021-06-05 20:00

#include <cstdlib>

#include <cstring>

#include <iostream>

using namespace std;

class str
{
public:

str(){ _string = 0, _size = 0; }

str(const char *pstr);

str(const str&);

int size(){ return _size; }

const char *c_str() { return _string; }

~str(){ free((void *)_string); }

private:

int _size;

char* _string;
};

str::str(const char *pstr)
{
if(!pstr)
{
_string = 0;

_size = 0;

return ;
}

_size = strlen(pstr);

// why here when use the _string = new char[_size + 1] expression cause the problem below:

// there is no source code available to the current location;


_string = (char *)malloc(_size + 1);

// do not test malloc failure

strcpy(_string, pstr);
}


str::str(const str& rhs)
{
if(rhs._string == 0)
{
_string = 0;

_size = 0;
}

else
{

_size = rhs._size;

_string = (char *)malloc(_size + 1);

// do not test malloc failure

strcpy(_string, rhs._string);
}
}

int main()
{

str strobj1("C++ Premier");

str strobj2(strobj1);

std::cout << strobj1.c_str() << "\n"

<< strobj2.c_str() << "\n";
}

最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-06-05 21:10
// there is no source code available to the current location;

这个只是调试的问题
估计vc里没加入new的源码级调试文件,所以跟不了,只能看汇编了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯