64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
//#include <string>
using namespace std;
#include<stdio.h>
#include<malloc.h>
#include<string.h>
class String
{
public:
String(const char *pStr);
String(const String &source);
~String(void);
String &operator = (const String &source);
void Disp()
{
cout << mPData << endl;
}
private:
char *mPData;
};
String::String(const char *pStr)
{
mPData = new char[strlen(pStr) + 1];
strncpy(mPData, pStr, strlen(pStr) + 1);
//Disp();
}
String::String(const String &source)
{
*this = source;
}
String &String::operator =(const String &source)
{
mPData = new char[strlen(source.mPData) + 1];
strncpy(mPData, source.mPData, strlen(source.mPData) + 1);
return *this;
}
String::~String()
{
delete mPData;
}
int main()
{
char *s = "afs";
String aStr(s);
aStr.Disp();
String bStr(aStr);
bStr.Disp();
for (int i = 0; i < 100000000; ++i)
{
bStr = aStr;
}//运行这段代码内存会被占满,怎么解决这个问题?
return 0;
}
#include <iostream>
using namespace std;
#include<stdio.h>
#include<malloc.h>
#include<string.h>
class String
{
public:
String(const char *pStr);
String(const String &source);
~String(void);
String &operator = (const String &source);
void Disp()
{
cout << mPData << endl;
}
private:
char *mPData;
};
String::String(const char *pStr)
{
mPData = new char[strlen(pStr) + 1];
strncpy(mPData, pStr, strlen(pStr) + 1);
//Disp();
}
String::String(const String &source)
{
//delete mPData;
mPData = new char[strlen(source.mPData) + 1];
strncpy(mPData, source.mPData, strlen(source.mPData) + 1);
//return *this;
}
String &String::operator =(const String &source)
{
delete mPData;
mPData = new char[strlen(source.mPData) + 1];
strncpy(mPData, source.mPData, strlen(source.mPData) + 1);
return *this;
}
String::~String()
{
delete mPData;
}
int main()
{
char *s = "afs";
String aStr(s);
aStr.Disp();
String bStr(aStr);
bStr.Disp();
for (int i = 0; i < 100000000; ++i)
{
bStr = aStr;
}
return 0;
}
//...
int main()
{
char *s = "afs";
String aStr(s);
aStr.Disp();
for (int i = 0; i < 100000000; ++i)
{
String bStr(aStr);
bStr.Disp();
}
return 0;
}