。。。关于类的内存出错。。。

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:54:15
// zouye3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include "string.h"

class CSample
{
char *p1,*p2;
public:
void init(char* s1,char* s2);
void print()
{
cout<<"p1="<<p1<<'\n'<<"p2="<<p2<<'\n';
}
void copy(CSample &one);
void free();
};

void CSample::init(char* s1,char* s2)
{//s1和s2所指向的字符串分别送到p1和p2所指向的动态申请的内存中
p1=new char[strlen(s1)];
p2=new char[strlen(s2)];
strcpy(p1,s1);
strcpy(p2,s2);
}

void CSample::free()
{//释放p1和p2所指向的动态申请的内在空间
delete []p1;
delete []p2;
}

void CSample::copy(CSample &one)
{//函数copy将对象one中的两个字符串拷贝到当前的对象中

strcpy(p1,one.p1);
strcpy(p2,one.p2);
}

int main(int argc,

#include <iostream.h>
#include <string.h>

class CSample
{
char * p1,* p2;
public:
void init(char * s1,char * s2);
void print()
{
cout<<"p1="<<p1<<"\n"<<"p2="<<p2<<"\n";
}
void copy(CSample & one);
void free();
};

void CSample::init(char * s1,char * s2)
{
p1=new char[strlen(s1)+1];
p2=new char[strlen(s2)+1];
strcpy(p1,s1);
strcpy(p2,s2);
}

void CSample::free()
{
delete [] p1;
delete [] p2;
}

void CSample::copy(CSample & one)
{
delete [] p1;
delete [] p2;
p1=new char[strlen(one.p1)+1];
p2=new char[strlen(one.p2)+1];
strcpy(p1,one.p1);
strcpy(p2,one.p2);
}

int main()
{
CSample c,one;
CSample & One=one;
char s1[]="cp1";
char s2[]