小编Ste*_*ski的帖子

如果我不释放/删除动态分配的数组会发生什么?

这段代码不是我写的!在类WebServer中,我们重载+ =运算符.该类使用动态分配的WebPage类型的对象数组(另一个类,组合)定义为WebPage*wp;

WebServer & operator +=( WebPage webPage ) {
WebPage * tmp = new WebPage [ count + 1];
for (int i = 0; i < count ; i ++)
tmp [i] = wp[i];
tmp [ count ++] = webPage ;
delete [] wp;
wp = tmp;
return * this ;
}
Run Code Online (Sandbox Code Playgroud)

因此,我们为一个对象创建一个具有额外空间的动态分配的WebPages的新数组,然后我们为它们分配wp所持有的值,然后为我们想要添加到数组的对象.所以如果我删除delete[] wp;该程序仍然可以正常工作.那么如果我删除那行代码会发生什么?而且wp = tmp,这是什么意思,wp只是动态的新名称,所以它适合类中的名称,但内存中的位置仍然相同?要么?

c++ class object dynamic-allocation

3
推荐指数
2
解决办法
9212
查看次数

c ++中对析构函数错误的未定义引用?

这是班级

class Email{
private:
    char to[100];
    char from[100];
    char subject[200];
    char body[1000];

public:
    Email();
    Email(char *za,char *od,char *tema, char *telo){
    strcpy(to,za);
    strcpy(from,od);
    strcpy(subject,tema);
    strcpy(body,telo);
    }
    ~Email();
    void setTo(char *to) {strcpy(this->to,to);}
    void setFrom(char *from) {strcpy(this->from,from);}
    void setSubject(char *subject) {strcpy(this->subject,subject);}
    void setBody (char *body) {strcpy(this->body,body);}
    char* getTo () {return to;}
    char* getFrom () {return from;}
    char* getSubject () {return subject;}
    char* getBody () {return body;}
    void print () {
    cout<<"To: "<<to<<endl<<"From: "<<from<<endl<<"Subject: "<<subject<<endl<<body;
    }
};
Run Code Online (Sandbox Code Playgroud)

正如你所看到它包含一个析构函数.程序的其余部分只是一个功能和主要功能.

int checkEmail(char *p){
int n=0,i=0;
while(p[i]!='\0') …
Run Code Online (Sandbox Code Playgroud)

c++ destructor class

2
推荐指数
2
解决办法
3万
查看次数

字符串如何在c ++中分配内存?

我知道动态内存比设置固定大小的数组和使用它的一部分更有优势.但是在动态内存中,您必须输入要存储在数组中的数据量.使用字符串时,您可以根据需要键入任意数量的字母(甚至可以使用字符串表示数字,然后使用函数转换它们).这个事实让我觉得与字符串相比,字符数组的动态内存已经过时了.

所以我想知道使用字符串时有哪些优点和缺点?字符串占用的空间何时释放?是否可以通过删除优先于字符串的优势来释放动态分配的内存?请解释.

c++ string dynamic-memory-allocation

2
推荐指数
2
解决办法
2264
查看次数