在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C++的局部变量在作用域结束后,一般都会被回收。如下面这段代码 1 map<a*, b*> _map; 2 3 void fun() 4 { 5 a _a; 6 b _b; 7 _map[&_a] = &_b; 8 } 当fun执行完成后,a、b对象都会被析构,所以再访问这两个对象就会出现问题。 一种方法是将a、b对象的作用域改为全局的,但不符合建议。 一种解决方法是用new实例化对象,这样,当fun执行完成后,C++便不会主动回收这两个对象 1 void fun() 2 { 3 a* _a = new a(); 4 b* _b = new b(); 5 _map[_a] = _b; 6 } 但new完对象后,一定要delete掉该对象。delete相当于调用了对象的析构函数。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论