主题:动态创建引发当机问题
我遇到一个问题,同样是动态分配,但是第一种当机,第二种不当机。
请各位多多指点,谢谢!
以下是第一种情况的代码简单介绍
class B{
...
char c[1024*100+1];
...
B(){};
~B(){};
void f()
{
...
char * str;
int nlength;
...
memcpy(c, str, nlength); //这里出现当机 nlength小于1024*100
...
};
};
class A{
void f()
{
char c[1024*100+1];
...
B * b = new B();
b->f();
...
}
};
int main()
{
A *a;
a=new A();
a.f();
delete a;
}
以下是修改后的代码,第二种代码,主要是把字符数组修改为字符指针
class B{
...
char * c;
...
B(){c=new char[1024*100+1]};
~B(){delete c;};
void f()
{
...
char * str;
int nlength;
...
memcpy(c, str, nlength);
...
};
};
class A{
void f()
{
char c[1024*100+1];
...
B * b = new B();
b->f();
...
}
};
int main()
{
A *a;
a=new A();
a.f();
delete a;
}
请各位多多指点,谢谢!
以下是第一种情况的代码简单介绍
class B{
...
char c[1024*100+1];
...
B(){};
~B(){};
void f()
{
...
char * str;
int nlength;
...
memcpy(c, str, nlength); //这里出现当机 nlength小于1024*100
...
};
};
class A{
void f()
{
char c[1024*100+1];
...
B * b = new B();
b->f();
...
}
};
int main()
{
A *a;
a=new A();
a.f();
delete a;
}
以下是修改后的代码,第二种代码,主要是把字符数组修改为字符指针
class B{
...
char * c;
...
B(){c=new char[1024*100+1]};
~B(){delete c;};
void f()
{
...
char * str;
int nlength;
...
memcpy(c, str, nlength);
...
};
};
class A{
void f()
{
char c[1024*100+1];
...
B * b = new B();
b->f();
...
}
};
int main()
{
A *a;
a=new A();
a.f();
delete a;
}